首页 > 解决方案 > 如何根据变量从对象值中获取类型

问题描述

我有以下类型:

type Core = {
  a: string
  b: number
}

我希望能够获得其中一个实体的类型以在其他地方使用。

伪代码:

const c: <the type of Core.a> = 'hello'

基本上我想要一个类型,它接受一个变量(a在这种情况下),然后从上面的对象返回值。

标签: typescript

解决方案


看起来你想要查找类型,也就是索引访问类型。如果T是一个类型,并且K是它的一个键的类型(或此类类型的并集),则T[K]是该键的属性的类型(或此类属性的并集)。在您的情况下,TCore并且K字符串文字类型 "a"

const c: Core["a"] = 'hello'; // okay

请注意,查找类型仅支持括号表示法,T["a"]; T.a即使键是字符串文字,也不能使用点表示法。(点表示法会导致与命名空间/模块的潜在名称冲突;如果您有一个命名空间T,它导出一个名为的类型,a那么T.a就是该类型的名称。)

好的,希望有帮助;祝你好运!

Playground 代码链接


推荐阅读