typescript - TypeScript 不需要所有索引属性
问题描述
我有以下代码:
type AZ = 'a'|'b'|'c'|'d'| ... |'z'; // union of many types
type Mapping = {
[K in AZ]: string;
}
const obj: Mapping = { // error, missing properties 'c', 'd', etc.
a: '',
b: ''
};
这让我将 props 限制obj
为仅与 union 匹配的那些,但它迫使我将它们全部列出。如果我这样做:
type Mapping = {
[K in AZ]?: string;
}
现在我不必提供每个道具,但生成的道具类型包含undefined
. 我如何表达我只想从 AZ 提供一些密钥,但如果提供了它们,它们不应该是undefined
?换句话说,我想要:
const obj: Mapping = { // ok
a: '', // checks 'a' as string
b: '' // checks 'b' as string
bad: '' // error 'bad' not in AZ
// no additional props needed
};
...而不必使用像obj[prop]!
.
PS:这与https://github.com/microsoft/TypeScript/issues/13195有关吗?
解决方案
推荐阅读
- excel - 将单元格从一张纸复制到另一张纸时出现内存不足错误
- python - Django TypeError:force_authenticate()缺少1个必需的位置参数:'self'
- wpf - 如何将子类型的集合绑定到依赖属性
- c# - WPF 绑定到用户控件中的组合框
- python - Unity IronPython ImportException:没有名为 __future__ 的模块
- rest - 尝试 api 时 Swagger 集线器返回 504
- reactjs - 如何防止用户从 Django REST 中的多个设备登录?
- python - Python 服务器回复
- sentry - Sentry 集成未显示在指标警报中
- python - Python 键错误:1