打字稿:类中的扩展集会导致错误(构造函数集需要' new')

时间:2017-04-09 00:39:39

标签: javascript angular typescript ecmascript-5

我尝试对Set对象实施一些基本操作,如here

这是代码

col-*

你们有任何想法让它发挥作用吗?或者我做错了什么?

目前我正在使用这个黑客找到here

1 个答案:

答案 0 :(得分:1)

如果您尝试向Set原型添加函数,或者将Polyfill添加到Set,则可以执行以下操作:

declare global {
  interface Set<T> {
      // polyfill
      isSuperset(subset: Set<T>) : boolean;
      // new function
      someNewFunc(): boolean;
  }
}

// add polyfill to the Set prototype as mentioned in the doc you provided: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Set 
Set.prototype.isSuperset = function(subset) {
    for (var elem of subset) {
        if (!this.has(elem)) {
            return false;
        }
    }
    return true;
}

//add the new someNewFunc;
Set.prototype.someNewFunc = function() {
    // some logic here...
    return true;
}

使用:

stringSet = new Set<string>()
stringSet.isSuperset(someOtherSet);
stringSet.someNewFunc(); // returns true