typescript 如何获得对象上某个键的类型?

vi4fp9gy  于 2023-01-18  发布在  TypeScript
关注(0)|答案(1)|浏览(157)
const map ={
  a:1,
  b:'Hello world',
  c:()=>99,
  d:()=>'Love',
  e:()=>'adoration'
}

type LoveFunctionNameInString = keyof typeof map & ?

const result: LoveFunctionNameInString = 'd' | 'e'

我想要一个指向'map'对象中字符串返回类型的方法的类型,所以每当我将类型'LoveFunctionNameInString'赋给变量时,Typescript只建议我使用'd'|没有"a"的"e"(因为它们是字符串返回类型的函数)|'乙'|"丙"字。

wd2eg0qa

wd2eg0qa1#

灵感源自answer
这是你的工作代码

const map ={
  a:1,
  b:'Hello world',
  c:()=>99,
  d:()=>'Love',
  e:()=>'adoration'
}

type KeysMatching<T, V> = NonNullable<
  { [K in keyof T]: T[K] extends V ? K : never }[keyof T]
>;

type LoveFunctionNameInString = KeysMatching<typeof map, () => string>;

相关问题