interface Foo {
[foo: "hello" | "world"]: string;
}
我收到一条类似的错误消息
An index signature parameter type cannot be a union type. Consider using a mapped object type instead.
什么是映射对象类型,如何使用?
答案 0 :(得分:13)
映射的对象类型对一组单例类型进行操作,并生成新的对象类型,其中将这些单例中的每一个都转换为属性名称。
例如,此:
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.
映射对象类型可用于许多不同的事情。在此处阅读更多信息:http://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types