打字稿定义文件自定义重载

时间:2017-03-24 14:35:49

标签: typescript typescript-typings

是否可以在现有d.ts文件中添加自定义重载?

我使用Bluebird Promise.all和6个项目的数组。定义文件包含5个项目:

static all<T1, T2, T3, T4, T5>(values: [Bluebird.Thenable<T1> | T1, Bluebird.Thenable<T2> | T2, Bluebird.Thenable<T3> | T3, Bluebird.Thenable<T4> | T4, Bluebird.Thenable<T5> | T5]): Bluebird<[T1, T2, T3, T4, T5]>;
static all<T1, T2, T3, T4>(values: [Bluebird.Thenable<T1> | T1, Bluebird.Thenable<T2> | T2, Bluebird.Thenable<T3> | T3, Bluebird.Thenable<T4> | T4]): Bluebird<[T1, T2, T3, T4]>;
static all<T1, T2, T3>(values: [Bluebird.Thenable<T1> | T1, Bluebird.Thenable<T2> | T2, Bluebird.Thenable<T3> | T3]): Bluebird<[T1, T2, T3]>;
static all<T1, T2>(values: [Bluebird.Thenable<T1> | T1, Bluebird.Thenable<T2> | T2]): Bluebird<[T1, T2]>;
static all<T1>(values: [Bluebird.Thenable<T1> | T1]): Bluebird<[T1]>;

我不认为拉取请求对于我的单个用例是必要的,并且想要添加定义文件,以便在我上传到ElasticBeanstalk时编译不会失败。

我需要的是添加

的能力
static all<T1, T2, T3, T4, T5, T6>(values: ...

仅适用于我的项目。

替代地;我可以强制使用Typescript来忽略这个单一的&#34;错误&#34;?

1 个答案:

答案 0 :(得分:0)

据我所知,没有办法合并声明。 我遇到了同样的问题,我能想出的唯一解决方案是创建这种类型:

type TPromiseAll6 = <T1, T2, T3, T4, T5, T6>(values: [
    Promise.Thenable<T1>,
    Promise.Thenable<T2>,
    Promise.Thenable<T3>,
    Promise.Thenable<T4>,
    Promise.Thenable<T5>,
    Promise.Thenable<T6>
]) => Promise<[T1, T2, T3, T4, T5, T6]>;

你的电话应该是这样的:

(Promise.all as TPromiseAll6)([...]);

这也适用于类型推断。