Код расширения массива приводит к ошибке «Ключевое слово« this »запрещено вне тела класса» в tslint TypeScript - PullRequest
0 голосов
/ 12 апреля 2020

Я написал следующий код метода расширения массива в TypeScript.

interface Array<T> {
  divideInto(n: number): Array<T[]>
}

Array.prototype.divideInto = function<T> (n: number): T[][] {
  const items = this as T[];

  if (n < 1) {
    return []
  }

  const arrList = []
  let index = 0

  while (index < items.length) {
    arrList.push(items.slice(index, index+n))
    index += n
  }
  return arrList
}

Когда я создаю этот код, TSLint сообщает следующее сообщение об ошибке.

the "this" keyword is disallowed outside of a class body

Я не понимаю, в чем проблема в моем коде.

Может кто-нибудь дать мне совет?

1 Ответ

1 голос
/ 12 апреля 2020

Давайте вместо этого расширим класс Array:

class AugmentedArray<T> extends Array<T> {
  divideInto(n: number):T[][] {
    const items = this

    if (n < 1) {
      return []
    }

    const arrList = []
    let index = 0

    while (index < items.length) {
      arrList.push(items.slice(index, index+n))
      index += n
    }

    return arrList
  }
}
...