![](/img/trans.png)
[英]Typescript make function return different types for different inputs
[英]Common function different return types
class Parent {
protected data: any;
get(): dataA | dataB {
return this.data;
}
}
class A extends Parent {
protected data: dataA = getDataA();
}
class B extends Parent {
protected data: dataB = getDataB();
}
什么是做的正確方法a.get()
和b.get()
返回各自的dataA
和dataB
,而不是目前是什么類型, dataA | dataB
dataA | dataB
,其中a
和b
是A
和B
實例?
您可以對Parent
使用一個類型參數,該參數允許派生類決定數據的類型:
class Parent<T> {
protected data: T;
get(): T {
return this.data;
}
}
class A extends Parent<dataA> {
protected data: dataA = getDataA();
}
class B extends Parent<dataB> {
protected data: dataB = getDataB();
}
let a = new A();
var da = a.get(); // is dataA
let b = new B();
var db = b.get();// is dataB
游樂場鏈接
如果dataA
和dataB
有共同的成員喲希望在使用Parent
,你可以添加一個類型約束T
。 這需要傳遞的type參數具有一定的形狀,並且您可以在Parent
使用成員:
class Parent<T extends { commonField: string } > { ... }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.