[英]interface, how to define default value
我正在尝试在我的模型中使用接口并为其创建默认值。
export interface IPerson {
id: string;
name: string;
}
class Person implements IPerson {
id = '';
name = 'John';
}
export class Family {
constructor(public address: string,
public members: Person[] = [new Person()]) {
}
所以,我想要的是一个家庭,当这个人没有名字时,默认是John。
它创建了一个 name = null 的人
我该怎么做?
Typescript 是一种定义值类型的工具,而不是值本身。 您不能将该值定义为接口。
您可以做的是设置Person
类的默认值:
class Person implements IPerson {
constructor(private id='', private name= 'John') {
}
}
因此,每当您使用new Person()
调用构造函数时,它都会创建一个具有默认值的实例。
Type Script 遵循OOPS
概念。 因此,无论OOPS
language
做什么,您几乎都可以做同样的事情。 只要关注inheritance
和variable
initialization
,我在您的实现中看不到任何问题。 它应该按预期工作。
您可以在此处查看工作副本 - https://stackblitz.com/edit/angular-dbb7ij
注意您的类
Family
有 2 个parameters
。first
一个是address
,这是required
字段,因为您没有提供任何default
值。 第二个parameter
是Users array
,它是optional
因为default
值是新用户的 1 个条目的数组。
我对 typescript angularJS 语法非常陌生,但是您不应该像这样创建 Person 类而不是 IPerson 接口的数组:
export class Family {
constructor(public address: string,
public members: Person[] = [new Person()]) {
}
如果类具有相同的名称,则无需实现接口
export interface Person {
id?: string;
name?: string;
}
export class Person {
constructor(person?: Person) {
return {
id: person ? person.id : '',
name: person ? person.name : 'John',
}
}
}
const person = new Person(); // id = '', name = 'John'
const person2 = new Person({name: 'Morpheus'}); // id = '', name = 'Morpheus'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.