Closed3

オーバーロード関数を利用した実装例

ken7253ken7253
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日前にクローズされました