打字稿中的多个构造函数

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
    
  

【讨论】:

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