開発覚書はてな版

個人的な開発関連の備忘録

【TypeScript】拡張メソッドの実装(基本型・staticメソッド)

概要

拡張メソッドの実装で基本型+staticメソッドの定義方法を記載する。
インスタンスメソッドへの拡張は以下の記事を参照ください。

kakkoyakakko2.hatenablog.com

kakkoyakakko2.hatenablog.com

動作環境

  • TypeScript 3.7.x

実装方法

  • TypeScriptのlib.d.ts内に基本型の型定義があるので、そこで拡張したい基本型を探す。
  • Stringの場合、StringConstructorとして定義されているので、定義を追加する。
  • Stringに対して直接実装を追加する。

サンプルソース

string.extensions.ts

拡張メソッドの定義側です。今回はStringに拡張メソッドを追加します。

export {};

// 拡張メソッドの定義
declare global {
    interface StringConstructor {
        isEmpty(value: string): boolean;
    }
}

// 拡張メソッドの実装側
String.isEmpty  = function(value: string): boolean {
  return value === '';
};

呼び出し側

import後、拡張した型にメソッドが追加される。

// 呼び出したい拡張メソッドをimport
import './string.extensions';

export function check(value: string): void {
  if (String.isEmpty(value)) {
    console.log('value is empty.');
  }
}

想定ケース

  • ステートをもたないutil系のfunctionを基本型に追加したい時に便利です。