在我的 Web 应用程序中,当我定义必须包含某种数据类型的类属性时,我总是指定此数据类型。但应用程序异步获取数据,因此实际上该属性具有未定义的值,然后它具有真实的数据:
class SomeClass {
a: ISomeData;
constructor() {
getDataAsync().then((res: ISomeData) => this.a = res);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这a: ISomeData是不正确的。一定是a: ISomeData | undefined。(如果this.a = someData在构造函数中同步设置,那就是正确的)是否有 tslint 规则用于检查类属性没有数据并且必须具有未定义的类型?
默认情况下,您分配的任何类型都可以采用值 undefined 和 null 以及您所做的任何类型声明。
在 TypeScript 配置文件 ( tsconfig.json) 中,您可以将StrictNullChecks编译器选项设置为 true。
{
"compilerOptions": {
"strictNullChecks": true
}
}
Run Code Online (Sandbox Code Playgroud)
来自编译器选项的 TypeScript 文档:
在严格的空检查模式下,空值和未定义值并不在每种类型的域中,并且只能分配给它们自己和任何(一个例外是未定义也可以分配给void)。
当您这样做时,类型为 as 的变量ISomeData只能包含该类型。
如果你想要未定义/空值,你必须像这样输入
a: ISomeData | undefined | null;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2984 次 |
| 最近记录: |