typescript - 使用默认值推断正确的参数类型
问题描述
我有一个带有“查询处理程序”的对象,每个查询处理程序都可以使用解构接收一个带有“参数”的对象,我需要使用默认值指定参数类型。
class BaseArg<T> {
value: T;
}
class NumberArg extends BaseArg<number> {}
class BooleanArg extends BaseArg<boolean> {}
type QueryArgs = { [key: string]: BaseArg<any> };
type Query = (args?: QueryArgs) => any;
type Queries = { [query: string]: Query };
class User {
id: number;
isAvailable: boolean;
}
const users: User[] = [];
const queries: Queries = {
getUser: ({
id = new NumberArg(), // <- this is "BaseArg<any>" but I expect "NumberArg"
}) => {
return users.find(user => user.id === id.value);
},
getUsers: ({
onlyAvailables = new BooleanArg(), // <- this is BaseArg<any> but I expect BooleanArg
}) => {
if(onlyAvailables) {
return users.filter(user => user.isAvailable);
}
return users;
},
};
在QueryArgs
我使用BaseArg<any>
as 值,但它的默认值为NumberArg
and BooleanArg
,如何在不指定查询 args 类型的情况下做到这一点
getUser: ({
id = new NumberArg(),
}: {
id: NumberArg,
}) => {
return users.find(user => user.id === id.value);
},
解决方案
推荐阅读
- flutter - 错误:未为“对象”类型定义运算符“[]”。([lets_chat] lib/view/search.dart:34 处的 undefined_operator)
- php - 更改 LDAP 的端口
- css - 如何在 bootstrap4 中置顶导航栏?
- sql-server - Apache.Zeppelin Docker+SQL Server
- excel - Power Query M - 无法完成使用数据库驱动程序的操作
- python - 从 pydantic Json 类型中检索 JSON 字符串
- android - 如何在颤动中模拟android导航控制器片段的行为?
- java - JpaRepository findAll() 返回对象列表,但字段设置为空(已关闭)
- elasticsearch - Elasticsearch Ram 推荐
- python - Python apriori 返回 Generator 而不是 Dataframe