🤖

値を中継する関数の引数の型にParameters<T>を使う

2021/09/16に公開

TypeScriptでは、オーバーロードが行われていたりして、素直に定義したくない関数の型があったりする。例えば、こういう型。

    interface LogFn {
        <T extends object>(obj: T, msg?: string, ...args: any[]): void;
        (msg: string, ...args: any[]): void;
    }

例えばこういう関数を何かしつつ呼びたいというとき、組み込みの型関数Parameters<T>を使うと便利。

function decoratedLog(...args: Parameters<LogFn>) {
    console.log("before console log");
    logger.info(...args);
}

Discussion