typescript - TypeScript 重载:以枚举参数为条件的返回类型
问题描述
我正在尝试根据函数的枚举参数指定返回类型。
这有效:
GetDoc(dbType: dbTypes.Responses, id: string): Promise<PouchResponse>;
GetDoc(dbType: dbTypes.Questionnaires, id: string): Promise<PouchQuestionnaire>;
GetDoc(dbType: dbTypes, id: string): Promise<PouchQuestionnaire | PouchResponse> {
if (dbType === dbTypes.Responses)
return new PouchDB<PouchResponse>("responses").get(id);
if (dbType === dbTypes.Questionnaires)
return new PouchDB<PouchQuestionnaire>("questionnaires").get(id);
throw "Invalid dbType";
}
但现在我想把它移到new db
它自己的函数中,所以我这样做:
GetDB(dbType: dbTypes.Responses): PouchDB.Database<PouchResponse>;
GetDB(dbType: dbTypes.Questionnaires): PouchDB.Database<PouchQuestionnaire>;
GetDB(dbType: dbTypes): PouchDB.Database<PouchQuestionnaire | PouchResponse> {
if (dbType === dbTypes.Responses)
return new PouchDB<PouchResponse>("responses");
if (dbType === dbTypes.Questionnaires)
return new PouchDB<PouchQuestionnaire>("questionnaires");
throw "Invalid dbType";
}
GetDoc2(dbType: dbTypes.Responses, id: string): Promise<PouchResponse>;
GetDoc2(dbType: dbTypes.Questionnaires, id: string): Promise<PouchQuestionnaire>;
GetDoc2(dbType: dbTypes, id: string): Promise<PouchQuestionnaire | PouchResponse> {
return this.getDB(dbType).get(id); // <<-- error here: dbTypes is not assignable to dbTypes.Responses
}
我该如何解决?
解决方案
推荐阅读
- javascript - 异步调用后如何渲染所有组件?
- javascript - 如何在 QML 的弹出窗口中排列项目?
- mongodb - 如何从 mongo 获取不同的行,包括匹配的父行
- python-3.x - 基于“查找”创建 MultiIndex 列
- javascript - 向 chartOptions 添加缩放属性不会添加任何缩放功能
- javascript - 如何从 fetch javascript 请求的响应中获取数据
- modeling - 谓词不一致
- javascript - 更改属性会中断其他功能
- python - 用 pd.read_sql_query 声明变量
- pine-script - Pine Script 中的 Tradingview 策略头寸大小不起作用