Есть ли значительное влияние на производительность при использовании функции для приведения переменной в ng-template?

#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 вместо a function .

3. Использование канала будет еще более громоздким — в контексте удобочитаемости шаблона. Я хочу, чтобы это приведение использовалось только для ввода IDE. Я спрашиваю здесь, является ли implact пренебрежимым или нет — потому что, если нет, я просто удалю приведенную функцию и буду работать с ложными ошибками в IDE 😉

4. Нет ничего плохого в вызове методов из шаблона, если временная сложность метода является разумной. Любой метод с линейной временной сложностью или лучше, который запускается из шаблона, обычно подходит. это комментарий от проверки репозитория angular issue this:github.com/angular/angular/issues/39634