请参阅代码here
interface ITest {
Name: string
}
var t:ITest;
//var t:ITest = {Name:null};
t.Name = "hello";
这是一个运行时错误,因为t永远不会初始化,并且可以通过取消注释该行来解决。有没有办法在编译时检测未初始化变量的赋值?
答案 0 :(得分:1)
不,在TypeScript中没有标准化的方法来防止分配给未初始化的变量的属性。
许多人会尝试通过单元测试或断言库捕获该错误,该库将在设置属性之前验证对象是否存在。
答案 1 :(得分:1)
没有TS不能那样做。有充分的理由。假设您在文件a中声明,在文件b中设置并在文件c中使用。
TypeScript无法知道你要加载文件a然后是b然后c。在运行时,您可能最终首先加载文件c(使用脚本标记)并仍然会收到此错误。