繁体   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