打字稿:当类中存在函数时,无法使用对象文字实例化对象



我刚开始使用Angular 2和Typescript玩,最近遇到了一些行为,我觉得很奇怪。

我的班级看起来像这样:

export class Person{
  id: number;
  name: string;
  height: number;
  weight: number;
  calculateBmi() {
    return (weight/(height*height));
  }
}

使用对象文字实例化新人时,

person: Person = {
    id: 1,
    name: "Jack Johnson",
    height: 180,
    weight: 70
  };

我在Visual Studio 2017中出现(设计时间(错误说:

态 属性"计算"类型中缺少{ID:数字,名称:字符串,身高:数字,重量:数字}'

它还指出它

无法转换类型'{id:number,name:字符串,身高:数字,重量:type'person':type'person'的'person'具有非视属性'计算'{id:数字,名称:字符串,身高:数字,重量:数字}'。

因此,转移器似乎将"计算BMI"视为属性,而不是函数。围绕的工作当然是添加构造函数并使用它来实例化课程,但是我想了解是否有任何解决方法,以便我仍然可以使用对象文字?

thanx,乔恩

btw。:我正在使用Resharper 2017.x,但我不使用这是导致错误消息出现的原因。

您的实例化是错误的。用新的

调用构造函数
person: Person = new Person()

或创建一个完整的对象文字

person: Person = {
    id: 1,
    name: "Jack Johnson",
    height: 180,
    weight: 70,
    calculateBmi: function() {...}
  };

最新更新