@netW0rm

Как определить интерфейс в typescript?

Допустим есть такой прокси
let test = new Proxy(new String('test'), {
    get: (str, method, r) => (...args: any[]) => new Promise(resolve => {
        resolve(str[method](...args))
    })
})

Теперь можно вызывать методы объекта String а результат будет возвращаться в промисах
let p = test.indexOf('st')
p.then(n => console.log(n)) // 2
test.toUpperCase().then(s => console.log(s)) // TEST

Но typscript не понимает, что методы indexOf, toUpperCase и т.д. вызванные через test возвращают промисы.
Как определить такой интерфейс, чтобы typscript правильно понимал тип?
interface PromiseOfString {
    // define
}

let test: PromiseOfString = new Proxy(new String('test'), {
    get: (str, method, r) => (...args: any[]) => new Promise(resolve => {
        resolve(str[method](...args))
    })
})

let p = test.indexOf('est')

typescript playground
В этом примере у переменной p должен быть тип Promise<number>

Конечно можно тупо руками прописать все методы в интерфейсе, но это тупо
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы