gpt4 book ai didi

typescript - 只有两个可能值的属性字符串

转载 作者:行者123 更新时间:2023-12-03 09:40:09 24 4
gpt4 key购买 nike

我有一个模型 Participant,它可以有两种类型:EstablishmentProvider:

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"; }' is not assignable to type 'Participant'.

Property 'isProvider' is missing in type '{ ltype: "Provider"; }'.

我无法摆脱上述错误。

enter image description here

我认为这无关紧要,但这段代码适用于 Angular 4 应用程序。

提前致谢。

最佳答案

您误解了 TypeScript 类。

您的对象只有一个ltype 属性; TypeScript 不会神奇地将其余属性插入到您的类中。

相反,您应该添加一个采用这两个字符串之一并初始化 ltype 的构造函数。

您可以在构造函数列表中使用 TypeScript 的 public 来为其声明属性和参数,并自动从参数初始化属性:

class Participant {
id?: number;
name?: string;

constructor(public 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 = new Participant('Provider');
console.log(filter.ltype); // 'Provider'

Live Example

关于typescript - 只有两个可能值的属性字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52169763/

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