Допустим есть такой прокси
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>
Конечно можно тупо руками прописать все методы в интерфейсе, но это тупо