TSLint ESLint - предупредить, когда функция доступна как свойство? - PullRequest
0 голосов
/ 20 мая 2018

Я совершил эту ошибку несколько раз - и хочу знать, есть ли правило ESLint или TSLint, которое его обнаружит

if (this.isBrowser && this.imageURL) {.....}

private isBrowser(): boolean{
    return isPlatformBrowser(this.platformId);
}

Использование this.isBrowser всегда вернет true, поскольку это фактфункция правдива.Мне либо нужно использовать get isBrowser() {} или this.isBrowser()

Может ли ESLint или TSLint проверить и предупредить, что вызов функции записывается как средство доступа к свойству?

1 Ответ

0 голосов
/ 20 мая 2018

Единственный случай, когда получатели свойств могут обрабатываться линтерами, это когда они потенциально не работают, есть TSLint / ESLint no-unused-expression rule :

this.isBrowser; // causes linter error

Этослучай с утверждениями Чая.В любом другом случае this.isBrowser не является запретом.

if (this.isBrowser) является допустимым фрагментом кода, который проверяет, что isBrowser член верен.Это может быть допустимо для метода, if (this.isBrowser) this.isBrowser().

Чтобы решить эту проблему с помощью TypeScript, не ленитесь об условиях

if (this.isBrowser === true && this.imageURL) {.....}

Это приведет к ошибке типа, если isBrowser - это функция.

Это проблема, которая может возникнуть из-за неопределенного стиля кода.Если метод, который проверяет, является ли это браузер, называется isBrowser, как тогда будет вызываться логическое свойство?Тот факт, что метод и свойство могут быть перепутаны и не могут сосуществовать, говорит о том, что метод, который возвращает логическое значение, может иметь различное имя, например, getIsBrowser, тогда как isBrowser зарезервировано для логического значения.

...