我正在尝试在模型中使用接口并为其创建默认值。
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()]) {
}
所以,我想得到一个家庭,当这个人没有名字时,默认情况下将是约翰。
它将创建一个名称为null的人
我该怎么办?
答案 0 :(得分:0)
我不太熟悉typescript angularJS语法,但是您不应该创建Person类的数组而不是IPerson接口吗?
export class Family {
constructor(public address: string,
public members: Person[] = [new Person()]) {
}
答案 1 :(得分:0)
Typescript是用于定义值类型(而不是值本身)的工具。 您不能将值定义为接口。
您可以做的是设置Person
类的默认值:
class Person implements IPerson {
constructor(private id='', private name= 'John') {
}
}
因此,每当您使用new Person()
调用构造函数时,它都会创建一个具有默认值的实例。
答案 2 :(得分:0)
类型脚本遵循OOPS
概念。因此,OOPS
language
所做的一切,您几乎都可以做。只要关心inheritance
和variable
initialization
,我就不会在您的实现中遇到任何问题。它应该可以正常工作。
您可以在此处查看工作副本-https://stackblitz.com/edit/angular-dbb7ij
注意 您的班级
Family
有2个parameters
。first
是address
字段,它是required
字段,因为您没有提供任何default
值。第二个parameter
是Users array
,第二个optional
是default
,因为Select "Year", "Customer", "Product_Series", "Total_Sales_EUR" From databasetable Where
的值是新用户的1项数组。
答案 3 :(得分:0)
如果类具有相同的名称,则无需实现接口
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'