【问题标题】:TSLint rules for checking undefined and NULL class properties用于检查未定义和 NULL 类属性的 TSLint 规则
【发布时间】:2019-05-25 20:24:48
【问题描述】:

在我的 Web 应用程序中,当我定义一个必须包含某种数据类型的类属性时,我总是指定该数据类型。但是应用程序是异步获取数据的,所以实际上属性有未定义的值,然后它有真实的数据:

class SomeClass {
    a: ISomeData;

    constructor() {
        getDataAsync().then((res: ISomeData) => this.a = res);
    }
}

我认为a: ISomeData 是不正确的。它必须是a: ISomeData | undefined。 (如果this.a = someData在构造函数中同步设置是正确的) 是否有 tslint 规则用于检查类属性没有数据并且必须具有未定义的类型?

【问题讨论】:

    标签: typescript tslint


    【解决方案1】:

    默认情况下,您分配的任何类型都可以采用 undefined 和 null 值以及您所做的任何类型声明。

    在您的 TypeScript 配置文件 (tsconfig.json) 中,您可以将 StrictNullChecks 编译器选项设置为 true。

    {
      "compilerOptions": {
        "strictNullChecks": true
      }
    }
    

    来自Compiler Options 上的 TypeScript 文档:

    在严格的 null 检查模式下,null 和 undefined 值不在每种类型的域中,并且只能分配给它们自己和任何类型(一个例外是 undefined 也可以分配给 void)。

    当您这样做时,类型为 ISomeData 的变量只能包含该类型。

    如果你想要未定义/空值,你必须像这样输入它

    a: ISomeData | undefined | null;
    

    【讨论】:

      猜你喜欢
      • 2016-12-28
      • 1970-01-01
      • 2016-02-04
      • 2020-05-25
      • 2021-10-25
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 2017-01-03
      相关资源
      最近更新 更多