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
的更多信息,请参阅