我是TS的新手,在理解为什么以下示例不起作用时遇到了一些麻烦。我正在尝试创建一种类型来定义执行以下操作的对象:
Requirement
(例如isAdmin
,isTenant
和isGuest
)。每个属性的值的类型
应该是一个数字。IsRegistered
)。这些属性中任何一个的值类型必须是Requirement
个值的数组。export type Requirement = "isAdmin" | "isUser" | "isCustomer";
export type fn = (route: string) => boolean;
export type RequirementCollection = { [name in string & Requirement]: Requirement extends name ? number : string[] };
let requirements: RequirementCollection = {
'isAdmin': 1,
'isTenant': 2,
'isGuest': 3,
'IsRegistered': ['isAdmin', 'isTenant'],
'SomeOtherAlias':'isAdmin' // <-- THIS SHOULD FAIL! (not a string array)
};
我已经尝试了很多方法来实现这一目标,但我感觉这里缺少一些基本知识。任何帮助将不胜感激!