为什么我在打字稿中没有收到有关 StrictNullChecks 的警告

2024-01-10

我在打字稿中有以下代码:

interface Member {
    name: string,
    age?: number
}

class Person implements Member {
    name: string;
    constructor(name: string ){
        this.name=name;
    }
}

function bar(person: Member) {
    return "Hello, " + person.name + " " + person.age;
}

let person = new Person("John");
console.log(bar(person));

我应该得到对象可能是“未定义”当我声明 person.age 时,在 bar 函数内发出警告,因为并非每个会员都可以有年龄。

我的打字稿配置如下所示:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true,
    "strictNullChecks": true,
    "outDir": "./built"
  },
  "include": [
    "./src/**/*"
  ],
  "exclude": [
    "node_modules"
  ]
}

知道为什么这对我不起作用吗?我正在使用 WebStorm 编辑器!


Turn on "strict": true,在 tsconfig.json 中启用此警告。

或者,如果您不想要您需要的所有严格选项:

"strictNullChecks": true,
"strictPropertyInitialization": true,

See the 文档 https://www.typescriptlang.org/docs/handbook/compiler-options.html了解更多信息

--strictNullCheck:

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

--strictPropertyInitialization

确保在构造函数中初始化非未定义的类属性。此选项需要启用 --strictNullChecks 才能生效。

第二个是你想要的(但需要strictNullChecks上班)

顺便说一句,正如 @jayasai amerineni 提到的,您的示例不应触发此警告。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我在打字稿中没有收到有关 StrictNullChecks 的警告 的相关文章

随机推荐