考虑以下类型:
type UserList = {
userIds: string[]
userData: {
[UserId in UserList['userIds'][number]]: {
userId: UserId
username: string
}
}
}
我想告诉TypeScript编译器两件事:
userData
密钥必须存在于userIds
中userId
字段必须等于同一条目的键
我觉得我需要某种this
或self
关键字,而不是UserList
1条答案
按热度按时间bvjxkvbb1#
我认为不使用泛型类型参数就不可能引用
userIds
中的确切字符串值:你的类型定义应该如下所示:
如果不想指定两次用户ID(在泛型参数和实际
UserList
变量中),则可以使用have to use a wrapper function:如果你不使用泛型参数,而是尝试在接口中使用
this
类型,如下所示:它不会起作用,因为
this['userIds']
总是解析为弱string[]
类型,而不是允许您基于userIds
的确切值来强类型化userData
的特定字符串集。