Angular Angualar 8:预定义值作为模型中的属性
比方说,我在定义模范人物Angular Angualar 8:预定义值作为模型中的属性,angular,typescript,Angular,Typescript,比方说,我在定义模范人物 export class Person { public firstName: string; public lastName: string; public gender: ???; } 我希望性别不是“男性”就是“女性” 我想我必须创建另一个类(在同一个模型中或单独???) 并构造值[{0:“男性”},{1:“女性”}] 这样做对吗? 如果是,我如何在个人模型中定义性别类型?首先,在Typescript中,对于只有属性的模型,使用接口而不是类。仅当需要构造函
export class Person {
public firstName: string;
public lastName: string;
public gender: ???;
}
我希望性别不是“男性”就是“女性”
我想我必须创建另一个类(在同一个模型中或单独???)
并构造值[{0:“男性”},{1:“女性”}]
这样做对吗?
如果是,我如何在个人模型中定义性别类型?首先,在Typescript中,对于只有属性的模型,使用接口而不是类。仅当需要构造函数并定义执行计算工作的方法时才使用类 有3种方法可以解决您的问题,您可以使用您提到的相同界面,也可以将性别定义为
enum
,或者执行以下操作:
export interface Person {
public firstName: string;
public lastName: string;
public gender: 'Male' | 'Female';
}
使用
boolean
类型
公共性别:布尔值代码>
如果gender
值为true,则表示男性,否则表示女性。就这样你可以按照自己的方式上课,然后像这样定义它:
export class Person {
public firstName: string;
public lastName: string;
public gender: Gender;
}
或者,使用字符串:
export class Person {
public firstName: string;
public lastName: string;
public gender: "Male" | "Female";
}
这样您就不需要另一个类。您可以使用enum
export enum Gender{
Male,
Female,
Other
}
export class Person {
public firstName: string;
public lastName: string;
public gender: Gender;
}
那么变性人就不在范围之内了!哦然后我们可以和其他人一起回答:公共性别:'mean'|'mean'|'Other'代码>太好了。延伸到它的问题。如果将来我想在其他语言中使用这些值呢。我会将它们存储在BE(字典)中,并从API调用中获取。那个么我应该使用类还是接口呢?这不重要,因为API通信通常是通过字符串进行的。Typescript中接口和类之间的区别在于接口不会被传输到Javascript,因此如果您一直使用类,那么您的应用程序将比使用接口时更大。当您想在初始化对象时执行某些工作时,例如,如果您想设置默认值、进行某些计算或使用某些方法等等,则应使用类。但仅对于属性,最好使用接口。
export enum Gender{
Male,
Female,
Other
}
export class Person {
public firstName: string;
public lastName: string;
public gender: Gender;
}