打字稿中的多个构造函数

Posted

技术标签:

【中文标题】打字稿中的多个构造函数【英文标题】:Multiple constructors in typescript 【发布时间】:2022-01-23 18:32:49 【问题描述】:

如何在 typescript 中定义多个构造函数?例如,我想有以下代码:

class Folder extends Asset 
 constructor(repositoryId: string, assetId: string) 
        super();
 
 
 constructor (folder: Folder) 
 

是否可以在 typescript 中以多种方式实例化一个类?

【问题讨论】:

这能回答你的问题吗? Constructor overload in TypeScript 您可以在“类型”级别有多个重载,但只允许单个实现。 (它需要能够处理string | Folder 作为第一个参数)typescriptlang.org/play?#code/… 【参考方案1】:

你是这样的:

class Folder extends Asset 
  constructor(repositoryId: string, assetId: string);
  constructor(folder: Folder);
  constructor(repositoryId?: string, assetId?: string, folder?: Folder)
    if (!folder && repositoryId && assetId) super();
    else 
      // To stuff
    
  

【讨论】:

以上是关于打字稿中的多个构造函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在打字稿中使用可选参数调用类构造函数[重复]

打字稿中的重载函数类型

在打字稿中使用 fs

用玩笑测试打字稿中的私有函数

如何在打字稿中声明函数类型

获取泛型函数的类型而不调用打字稿中的函数