界面,如何定义默认值

时间:2018-10-17 15:43:11

标签: angular typescript interface

我正在尝试在模型中使用接口并为其创建默认值。

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的人

我该怎么办?

4 个答案:

答案 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所做的一切,您几乎都可以做。只要关心inheritancevariable initialization,我就不会在您的实现中遇到任何问题。它应该可以正常工作。

您可以在此处查看工作副本-https://stackblitz.com/edit/angular-dbb7ij

  

注意   您的班级Family有2个parametersfirstaddress字段,它是required字段,因为您没有提供任何default值。第二个parameterUsers array,第二个optionaldefault,因为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'