generated at
recordの子要素の型を指定する
ユースケース
ts
const sortBy = <T>(predicate: (a: T) => any = a => a) => (a: T, b: T) => predicate(a) > predicate(b) ? 1 : predicate(b) > predicate(a) ? -1 : 0;
この any をやめたい

ここの any は、
T 型がObjectの場合は、その子要素の型
孫も含む
T 型がprimitive型の場合は、そのまま

あ、これ普通にnumberでいいのかmrsekut
だめだこういうのがありうる
ts
monitors.sort(sortBy(c => moment(c.publishStartAt)));

このままではこういう変な使い方ができてしまう
ts
[5,4,3,2,1].sort(sortBy(c => 1))


例えば、こういう型を作ればましになる
ts
type Values<T> = T extends { [key: string]: infer U } ? U : T; const a = { hoge: 1, piyo: 'hoge', fuga: true } as const; type A = Values<typeof a>; // 1|'hoge'|true
ts
const sortBy = <T>(predicate: (a: T) => Values<T>) => (a: T, b: T) => predicate(a) > predicate(b) ? 1 : predicate(b) > predicate(a) ? -1 : 0;