【发布时间】:2015-03-27 05:22:26
【问题描述】:
各种 promise 库的当前 d.ts 定义文件似乎放弃了提供给失败回调的数据类型。
when.d.ts:
interface Deferred<T> {
notify(update: any): void;
promise: Promise<T>;
reject(reason: any): void;
resolve(value?: T): void;
resolve(value?: Promise<T>): void;
}
q.d.ts:
interface Deferred<T> {
promise: Promise<T>;
resolve(value: T): void;
reject(reason: any): void;
notify(value: any): void;
makeNodeResolver(): (reason: any, value: T) => void;
}
jquery.d.ts (promise-ish):
fail(failCallback1?: JQueryPromiseCallback<any>|JQueryPromiseCallback<any>[], ...failCallbacksN: Array<JQueryPromiseCallback<any>|JQueryPromiseCallback<any>[]>): JQueryPromise<T>;
我在Promises/A+ spec 中没有看到任何提示我reason 无法输入的内容。
我确实在 q.d.ts 上尝试过,但是类型信息似乎在从 'T 到 'U 的转换发生时丢失了,我不完全理解为什么必须这样案例 - 我的尝试(机械地将 'N 和 'F 类型参数添加到 <T> 和 'O 和 'G 类型参数到 <U> 并输入我认为应该是的东西)主要是在 @ 987654335@为新增类型参数的类型。
有没有理由不能给它们自己的类型参数?是否存在可以完全类型化的 Promise 构造?
【问题讨论】:
标签: typescript promise type-safety