typescript如何通过key拿到指定的value类型?

作者站长头像
站长
· 阅读数 10

typescript如何通过key拿到指定的value类型?

type UserInfo = {
  name: string
  age: number
}

type Rule<T extends Record<string, any>, K extends keyof T = keyof T> = Partial<
  Record<
    K,
    {
      // 这个value的类型如何传,不想为any, 有考虑T[K] 但是推导
      validator: (value: T[K]) => void
    }
  >
>

const rule: Rule<UserInfo> = {
  name: {
    //  我想获取这个value 是UserInfo.name的value 类型,也就是string
    validator(value) {},
  },
  age: {
    //  我想获取这个value 是UserInfo.age的value 类型,也就是number
    validator(value) {},
  },
}

我想validator的value类型是根据UserInfo的里面的推断出来的,求大佬们帮助一下下,太感激不禁了

回复
1个回答
avatar
test
2024-07-14

answer image代码如下:

type UserInfo = {
  name: string
  age: number
}

type Rule<T extends Record<string, any>> = {
    [K in keyof T]?: {
        validator:(value: T[K])=> void
    }
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容