#typescript
#typescript
Вопрос:
У меня есть объединение, что-то вроде Promise<string> | boolean | void
Я хочу иметь возможность передавать эту переменную в защитную функцию и работать с ней, гарантируя, что это обещание.
Я пытаюсь создать защиту для этого.
function isPromise <T>(t: T) t is Promise<any> {
return !!maybePromise amp;amp; typeof maybePromise.then === 'function';
}
Как я могу извлечь тип обещания отсюда? Возможно ли это?
Комментарии:
1. Что вы имеете в виду под типом обещания. Я думаю, вы почти на месте: typescriptlang.org/play ? #код/…
Ответ №1:
Не уверен, что вы имеете в виду, говоря «извлечь тип обещания», но вы могли бы написать функцию защиты, подобную этой:
function isPromise(t: any): t is Promise<any> {
return t instanceof Promise
}
И использовать его в своем коде:
const someVariable: Promise<string> | boolean | undefined = new Promise(r => r('myString'))
if(isPromise(someVariable)) {
someVariable.then(result => { /* ... */ })
}
На самом деле вам даже не нужна функция защиты для этого, просто используйте instanceof
:
if(someVariable instanceof Promise) {
// ...
}