2016-02-05 4 views
0

У меня есть этот код в обратных вызовах многих мест:машинописи типа обратного вызова несовпадение

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

я думал, буду создавать интерфейс для этого длинного типа:

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 libs. Таким образом, вам не нужно писать собственное определение типа для этого. При построении обещание это единственный код, который нужно написать:

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

машинопись будет определить тип resolve и reject поэтому определение их тип явно избыточен и излишне многословным.

Смежные вопросы