【发布时间】:2021-03-05 07:32:02
【问题描述】:
我的尝试:
class Key {
foo: string = "";
}
var dict = new Map<Key, number>();
dict[new Key()] = 1; // <-- error here
我收到一个错误:
Type 'Key' 不能用作索引类型。
我也考虑过使用一个普通的 JS “对象”(它的功能是一个关联数组),但它们只能由字符串索引。
我也试过Record:
class Key {
foo: string = "";
}
var dict : Record<Key, number> = {}; // <-- error here
dict[new Key()] = 1;
得到:
类型'Key'不满足约束'string |号码 |象征'。 类型“键”不能分配给类型“符号”。
我也尝试过索引签名:
class Key {
foo: string = "";
}
interface MyDict {
[index: Key]: number; // <-- error here
}
var dict = new MyDict();
dict[new Key()] = 1;
得到:
索引签名参数类型必须是“字符串”或“数字”。
那么,如何声明一个带有用户自定义键的关联数组?
【问题讨论】:
标签: typescript associative-array