非运算符 (!) 在 TypeScript 中的行为是否不同?
Is the not operator (!) behaving differently in TypeScript?
以下值在 JavaScript 中被视为 "falsy":
- 错误
- 0
- ''
- ""
- 无
- 未定义
- 南
TypeScript 处理非运算符 (!) 的方式不同还是相同?
Typescript 的 design goals 之一是:
Preserve runtime behavior of all JavaScript code.
这意味着所有 Javascript 代码在 Typescript 代码中的行为相同。没有例外。您可能会遇到额外的语义错误,但如果您忽略这些错误,行为仍然相同。
因此,如果您想知道 !
这样的运算符在 TS 中的行为是否不同,答案永远是否定的
根据定义,发出的 JavaScript 与 JavaScript 的工作方式相同。
至于编译器在设计时将哪些类型识别为 falsy,简短的回答是 "everything except 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 没有 numeric literal type corresponding to NaN
; it's only seen as type number
. And since a number
can be either truthy or falsy, the type of !NaN
is just boolean
. There is an open suggestion, microsoft/TypeScript#28682 来为 NaN
(以及 Infinity
和 -Infinity
)引入数字文字,但我不知道是否这将永远得到解决。
好的,希望对你有帮助;祝你好运!
TypeScript 是 JavaScript 的超集。
Typescript 仅向 JavaScript 添加了额外的功能。
它不会否定 JavaScript.
的任何特性或功能
JavaScript 中的错误在 TypeScript 中也是错误的。
在 JavaScript 中是正确的,在 TypeScript 中也是正确的。
以下值在 JavaScript 中被视为 "falsy":
- 错误
- 0
- ''
- ""
- 无
- 未定义
- 南
TypeScript 处理非运算符 (!) 的方式不同还是相同?
Typescript 的 design goals 之一是:
Preserve runtime behavior of all JavaScript code.
这意味着所有 Javascript 代码在 Typescript 代码中的行为相同。没有例外。您可能会遇到额外的语义错误,但如果您忽略这些错误,行为仍然相同。
因此,如果您想知道 !
这样的运算符在 TS 中的行为是否不同,答案永远是否定的
根据定义,发出的 JavaScript 与 JavaScript 的工作方式相同。
至于编译器在设计时将哪些类型识别为 falsy,简短的回答是 "everything except 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 没有 numeric literal type corresponding to NaN
; it's only seen as type number
. And since a number
can be either truthy or falsy, the type of !NaN
is just boolean
. There is an open suggestion, microsoft/TypeScript#28682 来为 NaN
(以及 Infinity
和 -Infinity
)引入数字文字,但我不知道是否这将永远得到解决。
好的,希望对你有帮助;祝你好运!
TypeScript 是 JavaScript 的超集。
Typescript 仅向 JavaScript 添加了额外的功能。 它不会否定 JavaScript.
的任何特性或功能JavaScript 中的错误在 TypeScript 中也是错误的。 在 JavaScript 中是正确的,在 TypeScript 中也是正确的。