#angular #typescript
#angular #typescript
Вопрос:
При использовании <ng-template let-varnme>
varname
нетипизирован. Чтобы преодолеть это, я использую функцию идентификации для приведения этой переменной к типу.
<ng-template let-v>
<span>{{cast(v).prop1}}</span>
<span>{{cast(v).prop2}}</span>
<span>....</span>
</ng-template>
cast(v:any){
return v as MyType;
}
это, очевидно, создает технически нежелательные вызовы методов. Теперь мой вопрос в том, есть ли значительное влияние на производительность из-за такого подхода? Возможно, компилятор достаточно умен, чтобы фактически встроить этот метод.
Комментарии:
1. Я готов поспорить, что движок V8 встроит его. Компилятор TypeScript не будет встроить его
2. Если вы хотите уменьшить влияние на производительность, вы могли бы использовать a
pipe
вместо afunction
.3. Использование канала будет еще более громоздким — в контексте удобочитаемости шаблона. Я хочу, чтобы это приведение использовалось только для ввода IDE. Я спрашиваю здесь, является ли implact пренебрежимым или нет — потому что, если нет, я просто удалю приведенную функцию и буду работать с ложными ошибками в IDE 😉
4. Нет ничего плохого в вызове методов из шаблона, если временная сложность метода является разумной. Любой метод с линейной временной сложностью или лучше, который запускается из шаблона, обычно подходит. это комментарий от проверки репозитория angular issue this:github.com/angular/angular/issues/39634