我在打字稿中有以下代码:
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(使用前将#替换为@)