typescript - 如何在 Typescript 中使特定道具不可为空?
问题描述
我有一个类型:
type Item = {
cost: number | null
name: string
date: string | null
rating: number | null
}
TS 中有没有一种方法可以基于Item
,date
和, 创建类型rating
NonNullable
?我可以做这样的事情:
type FullItem = Omit<Item, 'date' | 'rating'> & {
date: NonNullable<Item['date']>
rating: NonNullable<Item['rating']>
}
但这似乎有点麻烦。
解决方案
好的,我刚刚提出了解决方案,似乎:
type RequiredNotNull<T> = {
[P in keyof T]: NonNullable<T[P]>
}
type Ensure<T, K extends keyof T> = T & RequiredNotNull<Pick<T, K>>
type Item = {
cost: number | null
name: string
date: string | null
rating: number | null
}
type FullItem = Ensure<Item, 'rating' | 'date'>
推荐阅读
- node.js - javascript 对象的查询字符串
- python - 计算销售额滚动(滞后和领先)差异的最佳方法是什么?
- c# - 扩展 LINQ 表达式
- google-apps-script - 脚本有效负载数据中的自动登录未正确编码 - 有没有办法解决这个问题?
- c++ - 我正在编写单元测试。如何修复 LNK1120 错误
- c# - 无法使用进程执行多个命令/参数
- java - 有没有办法在不将帐户添加到设备的情况下使用 Google 登录?
- django - 在Django的视图中序列化数据时如何指定为外部字段返回哪个值
- chez-scheme - 在 Chez Scheme 中重新导入库
- keras - SIMPLERNN KERAS 中的矩阵计算