今天我在Typescript中发现了一个奇怪的行为。
我的课程定义为:
class MyClass {
myMember: true;
}
编译和tslinted没有任何错误。该成员根本没有在打字稿代码中使用,但我在Angular中指的是它。
你可以想象我想做的是:
class MyClass {
myMember = true;
}
很明显,Angular没有看到该属性设置的值。
但我的问题是编译的原因? “真实”被理解为一种类型吗?我在tsconfig.json中遗漏了哪些内容会使该行抛出错误?
只是想知道是否有任何我可以定义的东西来捕获类似的错误,并且还试图了解制作可编辑的代码背后的逻辑。
答案 0 :(得分:2)
我在tsconfig.json中遗漏了哪一行会使该行抛出错误?
是的,你是。您可以设置其他编译器选项以获得此效果。
在您的情况下,在tsconfig中将编译器选项--strictPropertyInitialization
和--strictNullChecks
设置为true
。
这会引发错误:
财产' myMember'没有初始值设定项,并且在构造函数中没有明确赋值。
考虑添加其他compiler options。
您可以通过启用同名的编译器选项strict
来启用所有--strict
类型检查选项。
您还可以使用TypeScript playground上的代码测试前面提到的两个编译器选项。它有一个"选项"菜单,用于测试TypeScript中可用编译器选项的部分。