繁体   English   中英

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

[英]Typescript, declare a variable type must be key of an object

假设我有一个如下对象:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM