给定以下类型定义和函数:
type SetResponseType = 'returnNumber' | 'returnString';
const argumentTypedFunction = (arg: SetResponseType) => {
if (arg === 'returnNumber') {
return 123;
}
return 'abc';
}
argumentTypedFunction('returnNumber'); // 123 | 'abc'
当'returnNumber'被用作参数时,为什么typescript不知道返回类型只能是number类型?我必须做些什么才能让typescript根据参数值推断正确的类型?
1条答案
按热度按时间bf1o4zei1#
您可以使用函数重载签名来定义函数,并获得所需的推断返回类型。以下代码示例使用了您在问题中显示的示例数据:
TSPlayground
推理是可以的,但明确得多:它非常清楚地定义了与你的代码相关的类型的期望值--对你和你的代码的消费者都是如此--并且在某些情况下,如果你在你的函数实现中不小心犯了错误,它可以帮助编译器更好地帮助你。