属性“ currentTime”没有初始化程序,并且在构造函数中未明确分配

时间:2018-07-28 06:53:38

标签: typescript

我是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) { }

}

3 个答案:

答案 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
    //   ...
  }

注意:它会使静态分析变弱