当我尝试编译此 Typescript 代码时
interface Foo {
[foo: "hello" | "world"]: string;
}
我收到此错误消息
索引签名参数类型不能是联合类型。考虑改用映射对象类型。
什么是映射对象类型,如何使用它?
映射的对象类型对一组单例类型进行操作,并生成一个新的对象类型,其中每个单例都将转换为属性名称。
例如,这个:
type Foo = {
[K in "hello" | "world"]: string
};
将相当于
type Foo = {
"hello": string;
"world": string;
};
请记住,映射的对象类型是不同的类型运算符 - 大括号中的语法不能在接口或具有其他成员的对象类型中使用。例如
interface Foo {
[K in "hello" | "world"]: string; // ❌
}
产生以下错误:
A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.
映射的对象类型对于许多不同的事情都很有用。在这里阅读更多内容:https://www.typescriptlang.org/docs/handbook/2/mapped-types.html https://www.typescriptlang.org/docs/handbook/2/mapped-types.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)