Closed3
オーバーロード関数を利用した実装例
type Obj1 = Record<string, unknown>;
type Obj2 = Record<string, unknown>;
function merge(prev: Obj1, next: Obj2): Record<string, unknown>;
function merge(prev?: Obj1, next?: Obj2): Record<string, unknown> | Error;
function merge(prev?: Obj1, next?: Obj2): Record<string, unknown> | Error {
if ([prev,next].some(v => v === undefined)) {
return new Error("error!");
}
return {
...prev,
...next,
};
};
const maybe = merge();
// ^? Record<string, unknown> | Error
const noError = merge({}, {});
// ^? Record<string, unknown>
このスクラップは17日前にクローズされました