【问题标题】:TypeScript object implementing interface with extra properties error [duplicate]带有额外属性错误的 TypeScript 对象实现接口 [重复]
【发布时间】:2015-10-01 21:23:06
【问题描述】:

我正在学习关于 TypeScript 的 Pluralsight 课程,这会引发错误,而在课程中它被解释为有效代码。

错误 TS2322: 类型 '{ favouriteSport: string;名称:字符串;孩子:数字;年龄:数字; calcPets: () => 数字; makeYo...' 不可分配给类型 'Person'。 对象字面量只能指定已知的属性,而“Person”类型中不存在“favouriteSport”。

interface Person{
    age: number,
    name: string,
    kids: number,
    calcPets: ()=> number;
    makeYounger: (years: number) => void;
    greet: (msg: string) => string; 
}

var p: Person = {
    favouriteSport: "tennis",
    name: "Michael",
    kids: 4,
    age: 44,
    calcPets: function(){
        return this.kids * 2;
    },
    makeYounger: function(years: number){
        this.age -= years;
    },
    greet: function(msg: string){
        return msg + ', ' + this.name;
    }
}

【问题讨论】:

    标签: typescript


    【解决方案1】:

    看看这个 github issue。看起来1.6 中的行为发生了变化。我的猜测是你正在学习的课程是在 1.6 之前编写的。

    【讨论】:

    • 工作 gr8。谢谢链接。
    【解决方案2】:

    这些类型的检查是最近在 1.6 中添加的

    从 1.6 开始,我们正在收紧一些对象检查规则。 [...] 您还可以通过传递 --suppressExcessPropertyErrors 编译器选项来抑制此警告。

    http://blogs.msdn.com/b/typescript/archive/2015/09/02/announcing-typescript-1-6-beta-react-jsx-better-error-checking-and-more.aspx

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 2017-11-05
      • 2020-03-06
      • 1970-01-01
      • 2020-04-27
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多