如何在 TypeScript 中实现的接口中进行构造函数重载?
Posted
技术标签:
【中文标题】如何在 TypeScript 中实现的接口中进行构造函数重载?【英文标题】:How can I do constructor overloading in a implemented interface in TypeScript? 【发布时间】:2016-08-02 03:24:09 【问题描述】:我试图重载实现接口的类的构造函数,但出现以下错误:
[0] app/foo.ts(12,5): error TS2394: Overload signature is not compatible with function implementation.
类
export interface Item
time: number;
export class Foo implements Item
public time: number;
public name: string;
constructor();
constructor(
time: number,
name: string
)
this.time = id || -1
this.name = name || ""
;
我发现了其他类似的问题 (Constructor overload in TypeScript),但我遗漏了一些东西,因为它不起作用。打字稿版本是 1.8.9。
【问题讨论】:
【参考方案1】:实现签名不可见。您需要声明所有调用者应该看到的重载,然后编写实现主体。
export interface Item
time: number;
export class Foo implements Item
public time: number;
public name: string;
constructor();
constructor(
time: number,
name: string
);
constructor(
time?: number,
name?: string
)
this.time = id || -1
this.name = name || ""
;
您也可以阅读TypeScript FAQ entry on this
【讨论】:
以上是关于如何在 TypeScript 中实现的接口中进行构造函数重载?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React TypeScript 中实现 e 和 props?