🤖
値を中継する関数の引数の型にParameters<T>を使う
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