我正在阅读关于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;
}
}
答案 0 :(得分:3)
看看这个github issue。看起来1.6
中的行为发生了变化。我的猜测是你在1.6之前写的课程。
答案 1 :(得分:2)
最近在1.6
中添加了这些类型的检查从1.6开始,我们正在收紧一些对象检查规则。 [...] 您还可以通过传递--suppressExcessPropertyErrors编译器选项来禁止此警告。