我想寫一個方法總是返回它被調用的類型。我發現了「this」類型,它允許類似的東西,但它似乎只與字面「this」兼容,而不與同一類的其他實例兼容。總是返回自己的類型/「類型X不能分配鍵入此類型的打字稿方法」
abstract class A {
// I need a method which always returns the same type for a transformation method,
// a clone function would need the same interface
abstract alwaysReturnSameType(): this
}
class B extends A {
x:number
constructor(x:number) {
this.x = x
}
alwaysReturnSameType():this {
return new B(this.x + 1) // ERROR: Type 'B' is not assignable to type 'this'.
// this works, but isn't what I need: return this
}
}
我已經看了一些很長的問題,在github上(例如https://github.com/Microsoft/TypeScript/issues/5863),但我不知道是否有要在那裏找到一個解決方案。
有沒有解決這個方式或者我應該投給剿錯誤,即return <this> new B()
我不認爲你可以使用關鍵字** this **作爲類型。 – toskv
@toskv請參閱https://www.typescriptlang.org/docs/handbook/advanced-types.html「多態此類型」 –