2016-02-05 128 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因此指定其類型的類型明確是多餘的,不必要的冗長。