typescript中继承Map、Set报错的解决

Map、Set的polyfill实现是可以继承的

1if(!this.Map){ 2 //polyfill 3}else{ 4 (function(){//可继承Map替代原生Map 5 var GMap=globalThis.Map; 6 try{ 7 Map.call({}); 8 }catch(e){ 9 globalThis.Map=function(args){ 10 var map=new GMap(args); 11 Object.setPrototypeOf(map,Object.getPrototypeOf(this)); 12 //这里顺便再解决new Map(iterable)的问题,略 13 return map; 14 }; 15 Map.prototype=GMap.prototype; 16 } 17 })(); 18} 19 20if(!this.Set){ 21 //polyfill 略 22}else{ 23 (function(){//可继承Set替代原生Set 24 var GSet=globalThis.Set; 25 try{ 26 Set.call({}); 27 }catch(e){ 28 globalThis.Set=function(args){ 29 var set=new GSet(args); 30 Object.setPrototypeOf(set,Object.getPrototypeOf(this)); 31 //这里顺便再解决new Set(iterable)的问题,略 32 return set; 33 }; 34 Set.prototype=GSet.prototype; 35 } 36 })(); 37}
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java基础面试

Java基础面试1.Java集合类的总结tex1、Iterator:Collection(值)、Map(键值对);2、Collection:Set(无序不重复)、List(有序可重复)、Queue;3、Set:H

Swift 常见面试题解

基础1、class和struct的区别2、不通过继承,代码复用(共享)的方式有哪些3、Set独有的方法有哪些?4、实现一个min函数,返回两个元素较小的元素5、map、filter、reduce的作用6、map与flatmap的区别7、什么是copyonwrite8、如何获取当前代码的函

Java中Map,List与Set的区别

首先,数组和集合的区别:数组是大小固定的集合可以存储和操作数目不固定的一组数据,集合只能存放引用类型的的数据,不能存放基本数据类型特性List允许重复有序继承自ConnectionSet不允许重复无序继承自Connection

HashMap 初始化时赋值

一般初始化一个map并且给map赋值的写法:HashMap<String,StringmapnewHashMap<String,String();map.put("name","test");map.put("age","20");但是我想在初始化的时候就直接给map中set值。

ECMA Script 6之 Map 与 Set

Map对象保存键值对。任何值(对象或者原始值)都可以作为一个键或一个值。!ECMAScript6之Map与SetECMAScript6之Map与Set(https://www.linuxprobe.com/wpcontent/uploads/2020/07/126.png)Map对象Map对象保