小编Yon*_*nZo的帖子

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

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

我的班级是这样的:

export class Person{
  id: number;
  name: string;
  height: number;
  weight: number;

  calculateBmi() {
    return (weight/(height*height));
  }
}
Run Code Online (Sandbox Code Playgroud)

当使用对象文字实例化一个新人时,如下所示:

person: Person = {
    id: 1,
    name: "Jack Johnson",
    height: 180,
    weight: 70
  };
Run Code Online (Sandbox Code Playgroud)

我在 Visual Studio 2017 中收到(设计时)错误:

类型“{id:number,name:string,height:number,weight:number}”不可分配给类型“Person”类型“{id:number,name:string,height:number,重量:数量}'

它还指出,它

无法将类型“{id:number,name:string,height:number,weight:number}”转换为类型“Person”:类型“Person”具有非可选属性“calculateBmi”,该属性在类型“{id:”中不存在数字,名称:字符串,高度:数字,重量:数字}'。

因此,转译器似乎将“calculateBmi”视为属性,而不是函数。解决方法当然是添加一个构造函数并使用它来实例化该类,但我想了解是否有任何方法可以解决这个问题,以便我仍然可以使用对象文字?

谢谢乔恩

顺便说一句:我正在使用 Resharper 2017.x,但我不认为这是导致出现错误消息的原因。

typescript2.0 angular

5
推荐指数
1
解决办法
4894
查看次数

标签 统计

angular ×1

typescript2.0 ×1