数あまたの型パラメータが何を指定したいのかさっぱりわからん!
function foo<A, B, C, D>(saisyo: A, tsugi: B, sonotsugi: C, saigo: D) { ... }
foo<number, boolean, string, object>(1, true, '', {});
そんなときはこう!
function foo<{
saisyo: number;
tsugi: boolean;
sonotsugi: string;
saigo: object;
}>(0, 1, '', {});
type FooTypeParams = {
saisyo: any;
tsugi: any;
sonotsugi: any;
saigo: any;
};
type Foo<T extends FooTypeParams> = {
saisyo: T['saisyo'];
tsugi: T['tsugi'];
sonotsugi: T['sonotsugi'];
saigo: T['saigo'];
};
やったぜ。
余談:引数自体を名前付き引数にすればいいだけ説もある(有力)