我是TypeScript的新手。目前,我正在尝试学习TypeScript的界面。这是我的代码:
interface ClockInterface{
currentTime:Date;
setTime(d:Date):void;
}
class Clock implements ClockInterface{
currentTime:Date;[**[ts] Property 'currentTime' has no initializer and is not definitely assigned in the constructor.]**
setTime(d:Date){
this.currentTime =d;
}
constructor(h: number, m: number) { }
}
答案 0 :(得分:0)
您处于严格模式(特别是strictNullChecks
选项为true)。
因此,Date
类型的变量必须为Date
类型。 It may not be null or undefined。由于您没有在构造函数中初始化currentTime
,因此在调用setTime()
方法之前,该变量是不确定的。因此,您违反了类型定义。
要么在构造函数中初始化变量,要么将类型更改为Date | undefined
,或者更改编译器设置。
答案 1 :(得分:0)
要删除此错误,请进入“ tsconfig.json”并删除strict =“ true”。它对我有用,它检查strictnullcheck错误。
答案 2 :(得分:0)
在名字后面加上 (!) 唱:
someField!: string;
或
打开 TypeScript 配置文件
tsconfig.json
并将此代码添加到编译器选项
"angularCompilerOptions": {
// ...
"strictPropertyInitialization": false
// ...
}
注意:它会使静态分析变弱