打字稿:对象关键字名称包含空格

时间:2018-08-07 15:57:45

标签: typescript

在globals.ts中,我有:

export const Roles = { Manager: 2, "Customer Service": 4 }
const r = Roles["Customer Service"]; // ok

在使用文件中,我有:

import { Roles } from "./globals";
const m = Roles.Manager;  // ok
const M = Roles["Manager"]; // ok
const r = Roles["Customer Service"]; // not ok

最后一行给出:

  

元素隐式地具有“ any”类型,因为类型为'{Manager:number; “客户服务”:号码; ...”没有索引签名。

为什么不允许这样做?如何使用带有空格的键引用元素?

1 个答案:

答案 0 :(得分:0)

我怀疑在您的实际代码中,该属性是从某些非常量变量中键入的。对于node_modules,这将产生相同的错误。

noImplicitAny

您需要将let key = "Customer Service"; // type string const r = Roles[key]; // error 的名称限制为该类型的实际键。

key

否则,文字let key: keyof typeof Roles = "Customer Service"; // type "Manager"|"Customer Service" const r = Roles[key]; // ok 应该满足键类型,并且应该没有错误。

相关问题