javascript - 无法使用 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
,我认为分配EmptyOutputBody
泛型类型的父类()的对象T
对我有用。但是这段代码给了我关于output
财产的错误。它说
类型“EmptyOutputBody”不可分配给类型“T”。“EmptyOutputBody”可分配给“T”类型的约束,但“T”可以用约束“EmptyOutputBody”的不同子类型来实例化
有人可以帮我在这种情况下如何实例化泛型类型,或者我如何提供初始值output
应该是 typeT
或EmptyOutputBody
.
解决方案
对于初始分配,在声明时,您可以使用 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
推荐阅读
- selenium-webdriver - Protractor:Protractor 中的 ignoreSynchronization 和 async/await 有什么区别
- node.js - 如何在 GraphQL 中获取相同的嵌套对象
- python - 降低 seaborn 线图上日期的 x 轴值密度
- xcode - 在 Ubuntu 上下载 MACOS VMWARE 并运行 Xcode 时遇到的问题
- javascript - 如何阻止超脚本覆盖我的输入?佩里尔
- python - Pyinstaller 无法执行脚本:FileNotFoundError:没有文件或目录:'C:\\Users\\etc'
- python - 没有这样的元素:使用 Selenium 和 Python 单击按钮时无法定位元素错误
- c# - 如何根据字符串的高度和宽度绘制矩形(作为背景)?
- go - 如何在 golang 中创建一个指定路径的空文件。假设在 $HOME/newFile.txt
- javascript - document.execCommand 有哪些替代方法来选择和复制文本?