【发布时间】:2023-03-12 02:15:02
【问题描述】:
我有一个带有 Generic 的抽象类,我用 Union 类型实现,例如:
export abstract class DAO<T> {
async getDocument(ref: string): Promise<T> {
// irrelevant code that return T asynchronously
}
}
export class ConfigurationDAO extends DAO<ConfigurationType> {
//...
}
export type ConfigurationType = 'advertising' | 'theming';
ConfigurationDAO 类的 getDocument() 签名是:
async getDocument(ref: string): Promise<ConfigurationType>
问题是当我调用这个函数时,我有一个错误:
const advertisingDocument: 'advertising' = await this.getDocument('advertising');
错误:
Type 'ConfigurationType' is not assignable to type '"advertising"'.
Type '"theming"' is not assignable to type '"advertising"'
我不明白为什么当返回类型为'advertising' | 'theming'时'advertising'类型无效
【问题讨论】:
-
解释为什么这不起作用,以及可能的解决方案:stackoverflow.com/a/51101237/197472
-
感谢分享。我确实找到了解决方案。我终于通过类型转换分配了
getDocument()函数:const advertisingDocument: 'advertising' = await this.getDocument('advertising') as 'advertising';非常感谢
标签: javascript typescript generics casting union-types