【发布时间】:2017-07-19 16:18:32
【问题描述】:
我正在使用我想修改的通过@types 安装的类型 def。
Q 有一个非常软的.d.ts,它不允许您指定传递给reject 上Deferred 的参数类型。 Defferred 的界面如下所示:
declare namespace Q {
// ...
export interface Deferred<T> {
promise: Promise<T>;
resolve(value?: IWhenable<T>): void;
reject(reason: any): void;
notify(value: any): void;
makeNodeResolver(): (reason: any, value: T) => void;
}
// ...
}
对于普通接口,您可以只在global.d.ts 中创建具有匹配名称的接口,它们会自动合并,我无法让它与命名空间中的接口一起使用。
我想做的是在我的 global.d.ts 文件中删除这样的内容:
declare namespace Q {
export interface Deferred<T, R, N> {
reject(reason: R): void;
notify(value: N): void;
}
export function defer<T, R, N>(): Deferred<T, R, N>;
}
并让它将该接口和功能合并回Q 中的.d.ts 中的@types 中的那些。通过调用const def = Q.defer<string, string, number() 进行测试,引发Supplied parameters do not match any signature of call target.。
【问题讨论】:
标签: typescript namespaces