我有一个模型Participant
,它可以有两种类型:Establishment
或Provider
:
export class Participant {
id?: number;
name?: string;
ltype: 'Provider' | 'Establishment';
get isProvider(): boolean {
return this.ltype === 'Provider';
}
get isEstablishment(): boolean {
return this.ltype === 'Establishment';
}
get opposite(): string {
if (this.ltype === 'Provider') {
return 'Establishment';
}
return 'Provider';
}
}
一切都很好,到这里都没有错误。但是当我尝试初始化它时:
const filter: Participant = {
ltype: 'Provider'
};
它抛出:
Type'{ltype:“ Provider”; }”不能分配给“参与者”类型。
类型'{ltype:“ Provider”;中缺少属性'isProvider'; }'。
我无法摆脱以上错误。
我认为这无关紧要,但是此代码适用于Angular 4应用程序。
谢谢。
答案 0 :(得分:5)
您误解了TypeScript类。
您的对象仅具有» MyProject
[.NETCoreApp,Version=v2.1]
System.Private.ServiceModel [T] 4.4.0 -> 4.5.3
System.ServiceModel.Primitives [T] 4.4.0 -> 4.5.3
属性; TypeScript不会神奇地在您的类中插入其余属性。
相反,您应该添加一个采用这两个字符串之一并初始化ltype
的构造函数。
您可以在构造函数列表中使用TypeScript的ltype
声明属性和参数,并自动从参数初始化属性:
public