gpt4 book ai didi

javascript - typescript 中的 ES6 map

转载 作者:IT王子 更新时间:2023-10-29 02:38:54 29 4
gpt4 key购买 nike

我正在用 typescript 创建一个类,它有一个 ES6 (ECMAscript 2016) Map 属性,如下所示:

class Item {
configs: ????;
constructor () {
this.configs = new Map();
}
}

如何在 typescript 中声明 ES6 Map 类型?

最佳答案

编辑(2019 年 6 月 5 日):虽然“TypeScript 原生支持 Map”的想法仍然正确,但自版本 2.1 TypeScript 支持称为 Record 的内容以来.

type MyMapLikeType = Record<string, IPerson>;
const peopleA: MyMapLikeType = {
"a": { name: "joe" },
"b": { name: "bart" },
};

不幸的是,第一个通用参数(键类型)仍然没有得到完全尊重:即使是 string 类型,比如 peopleA[0](number ) 仍然有效。


编辑(2016 年 4 月 25 日): 下面的答案是旧的,不应被视为最佳答案。 TypeScript 现在确实“原生”支持 Maps,所以它只允许在输出为 ES6 时使用 ES6 Maps。对于 ES5,它不提供 polyfill;你需要自己嵌入它们。

有关详细信息,请参阅 mohamed hegazy's answer below以获得更现代的答案,甚至 this reddit comment一个简短的版本。


截至 1.5.0 测试版,TypeScript 尚不支持 Maps .它还不是 roadmap 的一部分, 要么。

目前最好的解决方案是一个具有类型键和值的对象(有时称为 HashMap )。对于具有 string 类型键和 number 类型值的对象:

var arr : { [key:string]:number; } = {};

但是有一些注意事项:

  1. 键只能是stringnumber类型
  2. 实际上,您使用什么作为键类型并不重要,因为数字/字符串仍然可以互换接受(只有值是强制执行的)。

以上面的例子:

// OK:
arr["name"] = 1; // String key is fine
arr[0] = 0; // Number key is fine too

// Not OK:
arr[{ a: "a" }] = 2; // Invalid key
arr[3] = "name"; // Invalid value

关于javascript - typescript 中的 ES6 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019542/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com