我有一个简单的功能
function fn<T = any>(param1?: X): T {
}
我想要做的是,使fn
的返回类型依赖于param1
。
如果param1
未定义 - >返回T | undefined
如果不是 - &gt;返回T
这可能在打字稿中吗?
答案 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 。