TypeScript对象实现具有额外属性错误的接口

时间:2015-10-01 21:23:07

标签: typescript

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

  

错误TS2322:输入' {favouriteSport:string; name:string;孩子:数量;年龄:数量; calcPets :()=>数; makeYo ...'不能分配给' Person'。     对象文字只能指定已知属性,并且' favouriteSport'类型' Person'中不存在。

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;
    }
}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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