【发布时间】:2019-03-19 06:58:10
【问题描述】:
我正在尝试将 TypeScript 类型添加到第 3 方 JavaScript 库中。大多数类方法接受同一个类的另一个实例并返回一个新实例,但它们也会接受相同的重载构造函数参数来代替类的实际实例。我试图避免为每个类的许多方法编写相同的重载签名,但我不确定如何在我的.d.ts 文件中执行此操作。
例如,我可以把每一个都写出来……
class Foo {
constructor(x: number);
constructor(x: number, y: number);
constructor({ x: number, y: number });
Fizz(foo: Foo): Foo;
Fizz(x: number): Foo;
Fizz(x: number, y: number): Foo;
Fizz({ x: number, y: number }): Foo;
Buzz(foo: Foo): Foo;
Buzz(x: number): Foo;
Buzz(x: number, y: number): Foo;
Buzz({ x: number, y: number }): Foo;
// etc... for several methods
}
但最好做类似...
class Foo {
constructor(x: number);
constructor(x: number, y: number);
constructor({ x: number, y: number });
// I'd like some sort of syntax like...
Fizz(constructor()): Foo;
Buzz(constructor()): Foo;
}
我可以轻松声明和重用重载的方法签名吗?
【问题讨论】:
标签: typescript constructor interface overloading typescript-typings