gpt4 book ai didi

angular - typescript : Can't instantiate object using object literals when a function exists in the class

转载 作者:太空狗 更新时间:2023-10-29 18:20:17 26 4
gpt4 key购买 nike

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

我的类(class)是这样的:

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 中遇到(设计时)错误:

Type '{id: number, name: string, height: number, weight: number}' is not assignable to type 'Person' Property 'calculateBmi' is missing in type '{id: number, name: string, height: number, weight: number}'

它还声明它

Cannot convert type '{id: number, name: string, height: number, weight: number}' to type 'Person': Type 'Person' has non-optional property 'calculateBmi' which is not present in type '{id: number, name: string, height: number, weight: number}'.

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

谢谢,乔恩

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

最佳答案

你的实例化是错误的。要么用new调用构造函数

person: Person = new Person()

或者创建一个完整的对象字面量

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

关于angular - typescript : Can't instantiate object using object literals when a function exists in the class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43775356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com