使用'true'作为打字稿中的类型

时间:2018-04-24 13:21:42

标签: typescript

今天我在Typescript中发现了一个奇怪的行为。

我的课程定义为:

class MyClass {
  myMember: true;
}

编译和tslinted没有任何错误。该成员根本没有在打字稿代码中使用,但我在Angular中指的是它。

你可以想象我想做的是:

class MyClass {
  myMember = true;
}

很明显,Angular没有看到该属性设置的值。

但我的问题是编译的原因? “真实”被理解为一种类型吗?我在tsconfig.json中遗漏了哪些内容会使该行抛出错误?

只是想知道是否有任何我可以定义的东西来捕获类似的错误,并且还试图了解制作可编辑的代码背后的逻辑。

1 个答案:

答案 0 :(得分:2)

  

我在tsconfig.json中遗漏了哪一行会使该行抛出错误?

是的,你是。您可以设置其他编译器选项以获得此效果。

在您的情况下,在tsconfig中将编译器选项--strictPropertyInitialization--strictNullChecks设置为true

这会引发错误:

  

财产' myMember'没有初始值设定项,并且在构造函数中没有明确赋值。

考虑添加其他compiler options

您可以通过启用同名的编译器选项strict来启用所有--strict类型检查选项。

您还可以使用TypeScript playground上的代码测试前面提到的两个编译器选项。它有一个"选项"菜单,用于测试TypeScript中可用编译器选项的部分