Typescript,声明变量类型必须是对象的键

Typescript,声明变量类型必须是对象的键,typescript,Typescript,假设我有一个对象,如下所示: let obj = { method1: () => { return "method1 called" }, method2: () => { return "method2 called" }, method3: () => { return "method3 called" }, } 我想声明一个变量,该变量的值只能是obj中的一个键 手动操作,我可以这样做: let myVar : "method1" | "method2"

假设我有一个对象,如下所示:

let obj = {
  method1: () => { return "method1 called" },
  method2: () => { return "method2 called" },
  method3: () => { return "method3 called" },
}
我想声明一个变量,该变量的值只能是
obj
中的一个键
手动操作,我可以这样做:

let myVar : "method1" | "method2" | "method3";

但是有什么方法可以动态地声明这一点吗?因此,我在
obj
中添加的任何方法都可以作为
myVar

的有效值找到,您可以使用
keyof
操作符,这将为您提供一个包含其他类型的所有属性名称的类型。要获得
obj
的类型,我们使用
typeof
操作符

let myVar : keyof typeof obj; // Actual type will be  "method1" | "method2" | "method3"
如果向对象添加更多键,
myVar
的类型将自动更新。但这只有在编译时知道密钥时才起作用

有关
keyof
的更多信息,请参阅