Оператор not (!) Ведет себя по-другому в TypeScript? - PullRequest
0 голосов
/ 02 февраля 2020

Следующие значения считаются "ложными" в JavaScript:

  • false
  • 0
  • ''
  • ""
  • null
  • undefined
  • NaN

По-разному ли TypeScript обрабатывает оператор not (!) Или он одинаковый?

Ответы [ 3 ]

4 голосов
/ 02 февраля 2020

Одной из целей проектирования Typescript является:

Сохранение поведения во время исполнения всего кода JavaScript.

Это означает, что ВСЕ Javascript код будет вести себя так же в коде Typescript. Без исключений. Вы можете получить дополнительные ошибки semanti c, но если вы их проигнорируете, то поведение будет таким же. быть не

3 голосов
/ 02 февраля 2020

Излученный JavaScript будет, по определению, работать так же, как JavaScript.

Что касается типов, которые компилятор распознает как falsy во время разработки, краткий ответ «все, кроме NaN»:

const f0 = !false  // true
const f1 = !0; // true
const f2 = !0n; // true
const f3 = !""; // true
const f4 = !null; // true
const f5 = !undefined; // true
const f6 = !NaN; // boolean (no NaN type in TypeScript)

Сейчас TypeScript не работает не имеет цифр c литерального типа , соответствующего NaN; это только замечено как тип number. И поскольку number может быть либо правдивым, либо ложным, тип !NaN просто boolean. Существует открытое предложение , microsoft / TypeScript # 28682 , чтобы ввести цифры c для NaN (и для Infinity и -Infinity), но я не знаю, будет ли это когда-либо адресовано.

Хорошо, надеюсь, это поможет; удачи!

Детская площадка ссылка на код

1 голос
/ 02 февраля 2020

TypeScript - это расширенный набор JavaScript.

Typescript только добавляет дополнительные функции к JavaScript. Он не отменяет никакой функции или функциональности JavaScript.

То, что ложно в JavaScript, также ложно в TypeScript. То, что верно в JavaScript, верно и в TypeScript.

...