0

以下值在 JavaScript 中被视为“虚假”:

  • 错误的
  • 0
  • ''
  • “”
  • 无效的
  • 不明确的

TypeScript 是否以不同方式处理非运算符 (!) 还是相同?

4

3 回答 3

4

Typescript的设计目标之一是:

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

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

因此,如果您想知道诸如 TS 之类的运算符!在 TS 中的行为是否有所不同,答案将始终是否定的

于 2020-02-02T18:45:30.033 回答
3

根据定义,发出的 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它只被视为 type number。并且由于 anumber可以是真值或假值,所以类型!NaN是 just boolean。有一个开放的建议,microsoft/TypeScript#28682NaN(and for Infinityand -Infinity) 引入数字文字,但我不知道这是否会得到解决。

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

Playground 代码链接

于 2020-02-02T18:54:48.613 回答
1

TypeScript 是 JavaScript 的超集。

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

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

于 2020-02-02T19:06:51.093 回答