Массив Prototype будет включен в Список Массива - PullRequest
0 голосов
/ 20 декабря 2018

Я использую машинопись для добавления нового прототипа в массив.Я узнал, что я могу распечатать функцию-прототип в цикле for.

.ts

declare global {
  interface Array<T> {
    group(groupByKey: T): Array<T>;

  }
}

if (!Array.prototype.group) {
  Array.prototype.group= function<T>(this: T[], groupByKey: string): T[] {
    return group(this, groupByKey);
  };
}

console

var keys = Object.keys({a:1});
var str=""
    for (var k in keys) { 
        console.log(k)
    }

Вывод на консоль

0 
group

можно ли вывести значение в массивевместо значения прототипа.Но прототип тоже может хорошо функционировать.

1 Ответ

0 голосов
/ 20 декабря 2018

Вы видите имя функции, потому что оно определено как перечисляемое свойство.Вы можете изменить способ определения этого:

Object.defineProperty(Array.prototype, "group", {
  value: function<T>(this: T[], groupByKey: string): T[] {
    return group(this, groupByKey);
  },
  enumerable: false, // <-- important part
  configurable: true,
  writable: true
});
...