TypeScript の配列で empty()・front()・back() を使う

TypeScript(JavaScript)の配列には、

  • empty():配列が空であるかどうかを返す
  • front():配列の先頭の要素を返す
  • back():配列の末尾の要素を返す

といったメソッドがありません(これらは C++の配列(vector)に存在するメソッドです)。

それぞれ

  • hoge.empty() : hoge.length === 0
  • hoge.front() : hoge[0]
  • hoge.back() : hoge[hoge.length - 1]

と書けば全く問題ないのですが、変数名が長いと少し読みづらい気がします。

const foo = hogehoge.fugafuga.back();
const bar = hogehoge.fugafuga[hogehoge.fugafuga.length - 1];

TypeScript でこれらのメソッドが使いたい場合は、以下のようなコードを書けば良いです。

declare global {
  interface Array<T> {
    empty(): boolean;
    front(): T;
    back(): T;
  }
}
/** 配列が空であるかどうかを返す */
(Array.prototype as any).empty = function() {
  return this.length === 0;
};
/** 配列の最初の要素を返す */
(Array.prototype as any).front = function() {
  return this[0];
};
/** 配列の最後の要素を返す */
(Array.prototype as any).back = function() {
  return this[this.length - 1];
};

あまりお行儀の良いコードではない気がしますが、(自分以外触らないコードでは)便利なので使っています。

TypeScript でこれらのメソッドが欲しくなったときは使ってみてください。

Avatar
fiore

自称C++er。

comments powered by Disqus