簡體   English   中英

無法使用 Typescript 中的 Generics 分配默認值

[英]Unable to assign a default value using Generics in Typescript

我在 Typescript 中有這段代碼。

export class CommonResponse<T extends EmptyOutputBody> {
    output: T  = new EmptyOutputBody();
    successful: boolean = false;
    responseCode: number = 200;
}

export class EmptyOutputBody {
    alerts: string[] = [];
}

我想為通用類型屬性output分配一個默認值。 通用類型T擴展EmptyOutputBody ,我認為分配通用類型T的父 class ( EmptyOutputBody )的 object 對我有用。 但是這段代碼在output屬性上給了我錯誤。 它說

類型“EmptyOutputBody”不可分配給類型“T”。 “EmptyOutputBody”可分配給“T”類型的約束,但“T”可以用約束“EmptyOutputBody”的不同子類型來實例化

有人可以幫我在這種情況下如何實例化泛型類型,或者如何向output提供初始值,該值應該是TEmptyOutputBody類型。

對於初始分配,在聲明時,您可以使用 as 語法,如下所示。

有一個巨大的討論,你可以在這里閱讀更多。

https://github.com/microsoft/TypeScript/issues/36821

export class CommonResponse<T extends EmptyOutputBody> {
  output: T = new EmptyOutputBody() as T; // Modify here
  successful: boolean = false;
  responseCode: number = 200;
}

export class EmptyOutputBody {
  alerts: string[] = [];
}
const res = new CommonResponse()
res.output = new EmptyOutputBody() // NO issue

暫無
暫無

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

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