如何使可以使用Typescript中的对象或常规参数构造函数初始化的类?

莎拉

所以我想制作一个可以用两种方式初始化的类。

首先,通过使用常规参数,像这样

class User {
    name: string
    age: number

    constructor(name: string, age: number) {
        this.name = name
        this.age = age
    }
}

或者可以使用这样的对象进行初始化

type CustomParameter = {
    name: string,
    age: number
}

class User {
    name: string
    age: number

    constructor(parameters: CustomParameter) {
        this.name = parameters.name
        this.age = parameters.age
    }
}

我不想创建两个不同的类,我想创建具有多个构造函数的类。所以我尝试使用函数重载,所以我认为我可以做这样的事情,但是有错误

type CustomParameter = {
    name: string,
    age: number
}

class User {
    name: string
    age: number

    constructor(parameters?: CustomParameter, name: string, age: number)
    constructor(parameters: CustomParameter, name?: string, age?: number) {

       if (!parameters) {
           this.name = name
           this.age = age
       } else {
           this.name = parameters.name
           this.age = parameters.age
       }

    }
}

上面的代码实际上是简化版本,该类实际上具有很多属性。所以如果我做类似的事情会很乏味

const somebody = new Human(parameters.name, parameters.age) // <---- it is easy if only 2 params
// but it will be tedious if I have to initialize a class with more than 10 properties 
// over and over again
// so I think it will be easier if I just put the object in the class constructor

错误是这样的

在此处输入图片说明

在此处输入图片说明

西信

您可以使用如下重载:

TS游乐场

type CustomParameter = {
  name: string;
  age: number;
};

class User {
  name: string;
  age: number;

  constructor(name: string, age: number);
  constructor(parameters: CustomParameter);
  constructor(first: CustomParameter | string, age?: number) {
    if (typeof first === "string") {
      this.name = first;
      this.age = age!;
    } else {
      this.name = first.name;
      this.age = first.age;
    }
  }
}

new User("wewe", 12);
new User({ name: "wewe", age: 12 });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

如何使用实现父接口的类中的构造函数初始化接口类型的对象?

来自分类Java

如何在构造函数中初始化对象数组?

来自分类Java

当类构造函数具有参数时,如何在Java中初始化数组?

来自分类Java

如何在工厂方法中初始化具有多个参数构造函数的类

来自分类Dev

用类构造函数初始化类对象的指针?

来自分类Dev

如何通过参数初始化构造函数中的数组?

来自分类Dev

可以使用C ++聚合初始化来构造实现接口的类的实例吗?

来自分类Dev

如何使用构造函数以非常量引用作为参数的私有对象成员初始化对象

来自分类Dev

在构造函数的可变参数中使用其他模板类执行模板类的初始化

来自分类Dev

C ++构造函数如何初始化其类的对象?

来自分类Dev

如何在C ++中使用构造函数(只是构造函数)在类中初始化大型私有数组?

来自分类Dev

我可以使用在类构造函数中初始化的ofstream类型的成员变量吗?

来自分类Dev

是否可以在构造函数中使用this.fieldname初始化基类中的字段?

来自分类Dev

Python:如何使用构造函数中的列表初始化类

来自分类Dev

如何在类的构造函数中初始化对象的2D向量?(C ++)

来自分类Dev

如何模拟使用外部方法调用在构造函数中初始化的对象?

来自分类Dev

我可以使用构造函数在带有1的模板和相关结构的类中初始化任意数量的元素吗?

来自分类Dev

C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

来自分类Dev

用参数初始化另一个类构造函数中的对象

来自分类Dev

使用构造函数初始化类中的指针

来自分类Dev

传递构造函数参数以初始化对象

来自分类Dev

如何在类构造函数中使用参数初始化std :: array的大小?

来自分类Dev

如何在类的其他方法中使用在构造函数中初始化的对象

来自分类Dev

如何访问在构造函数(JAVA)中初始化的对象?

来自分类Dev

如何使用“常规”(关键字)参数或父项实例初始化继承的对象

来自分类Dev

用于对象初始化的Delphi类构造函数

来自分类Dev

在类本身中初始化 TypeScript 变量与在构造函数中初始化的区别

来自分类Dev

使用 Castle Windsor 在服务类的构造函数中使用参数化构造函数初始化类

来自分类Dev

我如何在初始化列表中的构造函数之后初始化变量/对象?

Related 相关文章

  1. 1

    如何使用实现父接口的类中的构造函数初始化接口类型的对象?

  2. 2

    如何在构造函数中初始化对象数组?

  3. 3

    当类构造函数具有参数时,如何在Java中初始化数组?

  4. 4

    如何在工厂方法中初始化具有多个参数构造函数的类

  5. 5

    用类构造函数初始化类对象的指针?

  6. 6

    如何通过参数初始化构造函数中的数组?

  7. 7

    可以使用C ++聚合初始化来构造实现接口的类的实例吗?

  8. 8

    如何使用构造函数以非常量引用作为参数的私有对象成员初始化对象

  9. 9

    在构造函数的可变参数中使用其他模板类执行模板类的初始化

  10. 10

    C ++构造函数如何初始化其类的对象?

  11. 11

    如何在C ++中使用构造函数(只是构造函数)在类中初始化大型私有数组?

  12. 12

    我可以使用在类构造函数中初始化的ofstream类型的成员变量吗?

  13. 13

    是否可以在构造函数中使用this.fieldname初始化基类中的字段?

  14. 14

    Python:如何使用构造函数中的列表初始化类

  15. 15

    如何在类的构造函数中初始化对象的2D向量?(C ++)

  16. 16

    如何模拟使用外部方法调用在构造函数中初始化的对象?

  17. 17

    我可以使用构造函数在带有1的模板和相关结构的类中初始化任意数量的元素吗?

  18. 18

    C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

  19. 19

    用参数初始化另一个类构造函数中的对象

  20. 20

    使用构造函数初始化类中的指针

  21. 21

    传递构造函数参数以初始化对象

  22. 22

    如何在类构造函数中使用参数初始化std :: array的大小?

  23. 23

    如何在类的其他方法中使用在构造函数中初始化的对象

  24. 24

    如何访问在构造函数(JAVA)中初始化的对象?

  25. 25

    如何使用“常规”(关键字)参数或父项实例初始化继承的对象

  26. 26

    用于对象初始化的Delphi类构造函数

  27. 27

    在类本身中初始化 TypeScript 变量与在构造函数中初始化的区别

  28. 28

    使用 Castle Windsor 在服务类的构造函数中使用参数化构造函数初始化类

  29. 29

    我如何在初始化列表中的构造函数之后初始化变量/对象?

热门标签

归档