下記のような共通のプロパティを持つオブジェクトを引数とする関数がある時、input型をOptionalにしたい場合があります。この時に使えるTypescriptのジェネリクスのテンプレートを書いておきます。
interface TypeA {
prop1: string;
prop2: string;
prop3: number;
}
interface TypeB {
prop1: string;
prop2: string;
prop3: number;
prop4: string;
}
const a: TypeA = {
prop1: '1',
prop2: '2',
prop3: 3
}
const b: TypeB = {
prop1: '1',
prop2: '2',
prop3: 3,
prop4: '4'
}const multiplyProp3By2 = <T extends TypeA,>(obj: T): T => {
return {
...obj,
prop3: obj.prop3 * 2
}
}

