为什么我在打印脚本中没有收到有关StrictNullChecks的警告

我的打字脚本中有以下代码:

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时,我应该在栏函数中收到Object is‘unfined’警告,因为不是每个成员都可以有年龄。

我的打字脚本配置如下:

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

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


解决方案

StructNullChecks检查在属性上执行的所有操作是否导致非空值。但在bar函数中,它只打印person.age,而不管它是空的还是未定义的。如果您说person.age.toString()类型脚本将引发编译时错误。

相关文章