skip to content
w00d1f

typescript联合类型无法用于对象的索引签名参数

/ 1 min read

Table of Contents

问题描述

声明了一个联合类型,想要将联合类型作为对象的 key,但是报错。

type TestUnionType = "foo" | "bar";
interface TestInterface {
[index: TestUnionType]: any;
}
// error message
// An index signature parameter type cannot be a union type. Consider using a mapped object type instead.

解决方案

通过报错信息可以看出,联合类型不能作为对象索引签名参数,而应该使用映射对象类型。

type TestUnionType = "foo" | "bar";
interface TestInterface {
[index in TestUnionType]: any;
}

参考资料

Quick fix for ‘unions can’t be used in index signatures, use a mapped object type instead’

Mapped Types