首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打字稿中的ES6图

打字稿中的ES6图
EN

Stack Overflow用户
提问于 2015-05-03 21:18:52
回答 9查看 693.8K关注 0票数 277

我在类型记录中创建一个类,其属性为ES6 (ECMAscript 2016)地图,如下所示:

代码语言:javascript
复制
class Item {
  configs: ????;
  constructor () {
    this.configs = new Map();
  }
}

如何在类型记录中声明ES6映射类型?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2015-05-03 21:42:16

编辑(2019年6月5日):虽然"TypeScript本地支持Map“的想法仍然是正确的,因为2.1版本TypeScript支持称为Record的东西。

代码语言:javascript
复制
type MyMapLikeType = Record<string, IPerson>;
const peopleA: MyMapLikeType = {
    "a": { name: "joe" },
    "b": { name: "bart" },
};

不幸的是,第一个泛型参数(键类型)仍未得到充分尊重:即使使用string类型,类似于peopleA[0] ( number)的内容仍然有效。

编辑(2016年4月25日):下面的答案是旧的,不应该被认为是最好的答案。TypeScript现在确实“本机”支持地图,所以它只允许在输出为ES6时使用ES6地图。对于ES5,它不提供多填充;您需要自己嵌入它们。

有关更多信息,请参考mohamed hegazy的答复如下以获得更现代的答案,甚至参考这个编辑评论的简短版本。

在1.5.0beta版中,TypeScript还不支持地图。它也还不是路线图的一部分。

当前最好的解决方案是具有类型化键和值的对象(有时称为hashmap)。用于具有string类型键和number类型值的对象。

代码语言:javascript
复制
var arr : { [key:string]:number; } = {};

但是,一些注意事项:

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

在上面的例子中:

代码语言:javascript
复制
// 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
票数 364
EN

Stack Overflow用户

发布于 2015-05-07 21:34:21

见评论:https://github.com/Microsoft/TypeScript/issues/3069#issuecomment-99964139

TypeScript没有内置在pollyfills中。如果有的话,该由你来决定使用哪一种填充。你可以使用像es6Collectiones6-shims..etc之类的东西。所有类型记录编译器所需的都是要使用的ES6结构的声明。你可以在这个库文件中找到它们。 以下是相关部分: 接口Map { clear():size;删除(key: K):布尔;条目():IterableIterator;forEach(值: V,索引: K,map: Map) => void,thisArg: any):set;get(key: K):V;has(key: K):布尔值;key(key:K):IterableIterator;set(key: K,value?:V):Map;size: number;value():IterableIterator;Symbol.iterator:IterableIterator;Symbol.toStringTag: string;}接口MapConstructor { new ():Map;new (可迭代: Iterable):Map;prototype: Map;}声明var Map: MapConstructor;

票数 133
EN

Stack Overflow用户

发布于 2017-07-26 03:33:14

下面是一个示例:

代码语言:javascript
复制
this.configs = new Map<string, string>();
this.configs.set("key", "value");

演示

票数 100
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30019542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档