【问题标题】:Typescript, declare a variable type must be key of an object打字稿,声明变量类型必须是对象的键
【发布时间】:2018-01-26 12:30:58
【问题描述】:

假设我有一个像下面这样的对象:

let obj = {
  method1: () => { return "method1 called" },
  method2: () => { return "method2 called" },
  method3: () => { return "method3 called" },
}

我想声明一个变量,它的值只能是obj中存在的键之一。
手动,我可以这样做:

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

但是有什么方法可以动态地声明它吗?这样我在obj 中添加的任何方法都可以作为myVar 的有效值。

【问题讨论】:

    标签: typescript


    【解决方案1】:

    您可以使用keyof 运算符,这将为您提供一个包含另一种类型的所有属性名称的类型。要获取obj 的类型,我们使用typeof 运算符。

    let myVar : keyof typeof obj; // Actual type will be  "method1" | "method2" | "method3"
    

    如果您向对象添加更多键,myVar 的类型将自动更新。但这只有在编译时知道密钥的情况下才有效。

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

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 2021-01-20
      • 2020-01-03
      • 2017-06-10
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      相关资源
      最近更新 更多