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

带有额外属性的TypeScript对象实现接口错误,typescript,Typescript,我正在学习一门关于TypeScript的Pluralsight课程,这会抛出一个错误,而在课程中它被解释为一个有效的代码 错误TS2322:类型“{FavoriteSport:string;名称:string;kids:number;年龄:number;calcPets:()=>number;makeYo…”不能分配给类型“Person”。 Object literal只能指定已知属性,并且“Person”类型中不存在“FavoriteSport” 看看这个github。看起来行为在1.6中发生

我正在学习一门关于TypeScript的Pluralsight课程,这会抛出一个错误,而在课程中它被解释为一个有效的代码

错误TS2322:类型“{FavoriteSport:string;名称:string;kids:number;年龄:number;calcPets:()=>number;makeYo…”不能分配给类型“Person”。 Object literal只能指定已知属性,并且“Person”类型中不存在“FavoriteSport”


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

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

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


为链接使用了gr8.Thnx。
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;
    }
}