2016-02-05 96 views
0

我有这样的代码在回调很多地方:打字稿回调类型不匹配

return new Promise<Result> (
     (resolve : (Result) =>void,reject: (any) =>void) =>{ 
    ....... 
    }); 

,我想我会为这个long类型的接口:

interface callback<T> { 
    resolve : (value? :T) =>void; 
    reject : (error? : any) =>void; 
} 

但在地方像我不能用它:

return new Promise<Result> ( 
(c : Callback<Result>) = > { 
...... 
} 

TS抱怨回调不是解决办法:Result => void。

我该如何让它工作?

回答

1

如果您的目标是ES6,那么承诺已经被输入,如果您的目标是ES5,并且类型为非本机Promise库,则可以使用垫片。所以,你不需要为此编写你自己的类型定义。当构建一个承诺,这是你需要编写的代码只:

new Promise<TypeOfResult>((resolve, reject) => { 
    // do yar thing 
}) 

打字稿会推断resolvereject因此指定其类型的类型明确是多余的,不必要的冗长。