我试图创建一个扩展内置Promise
的自定义类,但是其中某些方法无法按预期工作。
以下es6将起作用:
class MyPromise extends Promise{
mythen(cb){
return this.then(cb)
}
}
MyPromise.resolve().mythen(()=>1).mythen(console.log)
但是以下类型密码却没有:
class MyPromise<T> extends Promise<T>{
mythen(cb){
return this.then(cb)
}
}
MyPromise.resolve().mythen(()=>1).mythen(console.log)
我发现MyPromise.resolve()
返回Promise<void>
而不是MyPromise<void>
。
但是,根据es6的行为,MyPromise.resolve()
确实会返回MyPromise<void>
。
这是否意味着我必须重写每个Promise
方法,例如resolve
then
catch
...。