Node.js × TypeScript 勉強中 (2)

Node.js × TypeScript 勉強中 - take a keen edge から続いた。


JavaScript の拡張メソッド (って呼ぶの?) 書くときはこうなる。

Array.prototype.chunk = function (size) {
    if (!this.length) return [];

    return [this.slice(0, size)].concat(this.slice(size).chunk(size));
}

で、 Node.js でこいつを別ファイルに切り出したい。そんなときは、

Array.prototype.chunk = function (size) {
  ...
}
exports = Array;

として、呼び出し側で

require('arrayExtensions');

function hoge(array) {
  const chunked = array.chunk(100);
}

してやる。モジュールじゃないので const extenstions = require('arrayExtensions') する必要はない。 TypeScript でいうと import extensions = require('arrayExtensions') みたいに書くと怒られる。

コピペばっかしてると import とか require とかがどの文脈のものなのかわからなくて詰みそうなところである。

ちなみに TypeScript の拡張メソッド (?) は ↑ だと怒られて、 interface を切る必要がある。

interface Array<T> {
    chunk(size: number): Array<T>;
}

Array.prototype.chunk = function (size) {
    ...
}
exports = Array;