В нашем проекте мы используем linting-config от AirBnB. Есть правило, согласно которому методы класса должны использовать this
или быть объявлены как статические. Теоретически это правило имеет для меня большой смысл, но в контексте angular, похоже, вызывает некоторые проблемы. Представьте себе такой компонент (Stackblitz< /а>):
import { Component, VERSION } from '@angular/core';
@Component({
selector: 'my-app',
template: '<p>{{doSomething("hello stack overflow")}}'
})
export class AppComponent {
doSomething(string: string): string {
return string.toLocaleUpperCase();
}
}
Теперь линтер будет жаловаться на то, что doSomething
не использует это. Теперь мы можем сделать функцию статической, чтобы удовлетворить ее требования, но тогда мы не сможем использовать функцию в шаблоне.
Одним из выводов может быть то, что doSomething
не должен быть частью AppComponent, а, например, другой службой. Но тогда нам придется снова обернуть статическую функцию в нестатическую. В конце концов, функция упаковки не намного меньше исходной, поэтому весь аутсорсинг для обслуживания кажется бессмысленным. Тем более, что мы говорим о функциях, которые явно полезны только для шаблона компонента. Это кажется проблематичным, особенно с функцией отслеживания для trackBy
из ngForOf
- они, как правило, не используют ключевое слово this
по своей природе и используются только в шаблоне, поэтому они не могут быть статическими.
Итак, существует ли значимый шаблон, как обрабатывать функции, которые используются в шаблонах вместе с этим правилом, или это просто бесполезное правило для angular?