使函数的return-type依赖于参数类型?

时间:2018-05-03 10:49:36

标签: typescript

我有一个简单的功能

function fn<T = any>(param1?: X): T {
}

我想要做的是,使fn的返回类型依赖于param1

如果param1未定义 - >返回T | undefined

如果不是 - &gt;返回T

这可能在打字稿中吗?

1 个答案:

答案 0 :(得分:2)

您可以使用function overloading

function fn<T>(): T | undefined;
function fn<T, X>(param1: X): T;
function fn<T, X>(param1?: X): T | undefined { 
    // dummy implementation
    if (param1) {
        return {} as T;
    }

    return undefined;
};

const foo = fn<string>(); // string | undefined
const bar = fn<string, number>(1); // string

不要忘记打开 strictNullChecks