簡體   English   中英

常用函數的不同返回類型

[英]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()返回各自的dataAdataB ,而不是目前是什么類型, dataA | dataB dataA | dataB ,其中abAB實例?

您可以對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

游樂場鏈接

如果dataAdataB有共同的成員喲希望在使用Parent ,你可以添加一個類型約束T 這需要傳遞的type參數具有一定的形狀,並且您可以在Parent使用成員:

class Parent<T extends { commonField: string } > { ... }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM