繁体   English   中英

非运算符 (!) 在 TypeScript 中的行为是否有所不同?

[英]Is the not operator (!) behaving differently in TypeScript?

以下值在 JavaScript 中被认为是“假的”:

  • 错误的
  • 0
  • ''
  • “”
  • 空值
  • 不明确的
  • NaN

TypeScript 对 not 运算符 (!) 的处理方式不同还是相同?

Typescript 的设计目标之一是:

保留所有 JavaScript 代码的运行时行为。

这意味着所有 Javascript 代码在 Typescript 代码中的行为都相同。 没有例外。 您可能会遇到额外的语义错误,但如果您忽略这些错误,行为仍然相同。

因此,如果您想知道是否有诸如! 在 TS 中表现不同,答案永远是否定的

根据定义,发出的 JavaScript 与 JavaScript 的工作方式相同。

至于编译器在设计时识别为假的类型,简短的回答是“除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 没有对应于NaN数字文字类型 它只被视为类型number 由于一个number可以是真number也可以是假值,所以!NaN的类型只是boolean 有一个公开的建议 microsoft/TypeScript#28682NaN (以及Infinity-Infinity )引入数字文字,但我不知道这是否会得到解决。

好的,希望有帮助; 祝你好运!

Playground 链接到代码

TypeScript 是 JavaScript 的超集。

Typescript 只为 JavaScript 添加了附加功能。 它不会否定 JavaScript 的任何特性或功能。

JavaScript 中的错误在 TypeScript 中也是错误的。 在 JavaScript 中正确的在 TypeScript 中也是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM