Почему сами функции оцениваются как true в TypeScript? - PullRequest
0 голосов
/ 11 июня 2018

Я недавно начал изучать TypeScript.Мне интересно, почему следующие конструкции работают без ошибок / предупреждений на этом языке:

function f(): boolean {
    return false;
}

if ( f ) {
    performSomeAction();
} 

(и фактически будут выполнять условную часть кода), в то время как большинство программистов, вероятно, признают, что это опечатка (отсутствие вызова скобок функции) и переписать его следующим образом:

if( f() ){
    performSomeAction();
}

Я имею в виду, есть ли какая-то реальная причина для того, чтобы объект функции оценки стал истинным?Или, скорее, это просто то, что делает код более уязвимым для таких ошибок?

[РЕШЕНИЕ] Чтобы избежать ошибок такого рода, можно изменить стиль кодирования.В условном выражении можно использовать "===" строгую проверку на равенство, которая в первом примере приведет к тому, что "Operator" === 'не может быть применен к типам' () => boolean 'и' boolean '"Ошибка компилятора TypeScript,

1 Ответ

0 голосов
/ 11 июня 2018

существует ли какая-либо реальная причина, по которой объект функции оценки становится истинным?

Позволяет проверить, существуют ли они.

Например, библиотека JavaScriptможет иметь плагины, которые при необходимости позволяют реализовывать функции.Затем он может проверить, реализует ли плагин функцию, и если он это делает, то использует ее.

Относительно того, является ли это хорошей практикой, выходит за рамки этого ответа, но JavaScript это позволяет, поэтому TypeScript поддерживает ее..

Существует способ изменить стиль кодирования для обнаружения этого типа ошибки.

Использование === сделает "строгую" проверку на равенство, которая также проверит типыдва значения сравниваются.if( f === true ) приведет к ошибке несоответствия типов: «Оператор '===' не может быть применен к типам '() => boolean' и 'boolean'".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...