【发布时间】:2020-10-12 23:48:33
【问题描述】:
我有一种情况,我可以将一些可选的 T 恤尺寸道具添加到对象中。有没有办法定义一个类型并将其设置为接口中可选键的类型?
type Size = `xxs` | `xs` | `s` | `m` | `l` | `xl` | `xxl`;
interface Sizes {
[key: Size]: string;
^^^
}
上面的例子给我带来了以下错误:
索引签名参数类型不能是联合类型。考虑改用映射对象类型。ts(1337)
然后我找到this question,并将我的代码修改如下:
type Size = `xxs` | `xs` | `s` | `m` | `l` | `xl` | `xxl`;
interface Sizes {
[key in Size]: string;
^^^^^^^^^^^
}
但随后出现以下错误:
接口中的计算属性名称必须引用类型为文字类型或“唯一符号”类型的表达式。ts(1169)
计算属性名称必须是“字符串”、“数字”、“符号”或“任意”类型。ts(2464)
找不到名称'key'.ts(2304)
我显然错过了一些在我的实施中相当重要的事情。任何解释将不胜感激。
【问题讨论】:
标签: typescript object types