强制 Typescript 对象的索引成员的类型?

新手上路,请多包涵

我想将 string -> string 的映射存储在 Typescript 对象中,并强制所有键映射到字符串。例如:

 var stuff = {};
stuff["a"] = "foo";   // okay
stuff["b"] = "bar";   // okay
stuff["c"] = false;   // ERROR!  bool != string

有没有办法让我强制这些值必须是字符串(或任何类型..)?

原文由 Armentage 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 539
2 个回答
var stuff: { [key: string]: string; } = {};
stuff['a'] = ''; // ok
stuff['a'] = 4;  // error

// ... or, if you're using this a lot and don't want to type so much ...
interface StringMap { [key: string]: string; }
var stuff2: StringMap = { };
// same as above

原文由 Ryan Cavanaugh 发布,翻译遵循 CC BY-SA 4.0 许可协议

实际上有一个内置的实用程序 Record

     const record: Record<string, string> = {};
    record['a'] = 'b';
    record[1] = 'c'; // leads to typescript error
    record['d'] = 1; // leads to typescript error

原文由 Ivan Pesochenko 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进