Avatar ·

TypeScript错误:“索引签名参数类型不能是联合类型” — 如何修复?

大家好,各位同行!我是TypeScript新手,遇到了一个无法理解的错误。有一个对象,它存储不同类型用户的设置:'admin'和'user'。我想创建一个类型,确保对象的键只能是这些字符串,而值是布尔类型。这是我的代码: ```typescript type UserRole = 'admin' | 'user'; interface Settings { [key: UserRole]: boolean; // 错误! } ``` TypeScript报错:“索引签名参数类型不能是联合类型。请考虑改用映射对象类型”。我以为联合类型可以用作键,但编译器不同意。我需要对象只能包含'admin'和'user'属性,并且当尝试访问其他键(例如'guest')时,TypeScript会报错。如何正确实现?我看到文档中提到了映射类型,但不太理解如何在我的情况下应用。感谢提供带有示例的清晰解释。