angular - 是否可以使用类型映射和条件类型只需要对象中的某些指定键?
问题描述
有来自第 3 方的类型:
interface UpdateRequest {
data?: ValueRange[];
options?: Options
}
我想用这个签名创建一个方法:
update(params: RequiredOnly<UpdateRequest, 'data'>) {
//...
}
RequiredOnly 类型实用程序将只要求关键“数据”,而不是像Required 那样同时要求“数据”和“选项”。
是否可以创建RequiredOnly 类型的实用程序?
我被困在这里:
type RequiredOnly<T, a extends keyof T> = {
[K in keyof T extends a ? a : never ]-?: T[K]
}
解决方案
您可以使用Pick
and Required
and intersect back 与原始类型来取回其他可选属性
type RequireSome<T, K extends keyof T> = Required< Pick<T, K>> & T;
推荐阅读
- php - 使用php降序
- scala - 查找不同行中两个时间戳之间的持续时间
- nginx - 带有别名的 nginx try_files 不起作用,但 rewrite 可以
- react-native - 是否可以导入我的照片以响应本机应用程序并将它们分享到 instagram
- python - 如何通过切片在字典python中分别获取键和值
- python - 我们将如何使用输入语句的输出,将使用什么来代替命令中的 (is) 和命令中的生日运行
- python - 如何在python中解析具有相同类名的网站的多个属性?
- reactjs - 如何在 Mui 数据表中进行自定义重置行为
- java - Spring boot 控制器调用不支持内容类型“application/json;charset=UTF-8”
- asp.net-core - (以编程方式)将 .net 核心应用程序自行安装为 Windows 服务