如何解决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: ''
};
这使我只能将obj
的props限制为那些与union匹配的props,但是它迫使我列出所有props。如果我改为这样做:
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有关系吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。