我在打字稿中有以下代码:
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编辑器!
解决方法:
strictNullChecks检查对属性执行的所有操作是否导致非空值.但是在bar函数中,它仅打印person.age,无论它是否为null或未定义.如果要说person.age.toString(),打字稿会抛出编译时错误.
原文地址:https://codeday.me/bug/20191108/2007434.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。