【发布时间】:2021-06-27 01:03:45
【问题描述】:
我正在尝试一个非常基本的(人为的)条件类型函数并遇到意外错误:
function test<
T
>(
maybeNumber: T
): T extends number ? number : string {
if (typeof maybeNumber === 'number') {
return maybeNumber // Type 'T & number' is not assignable to type 'T extends number ? number : string'.
}
return 'Not a number' // Type '"Not a number"' is not assignable to type 'T extends number ? number : string'.
}
我认为这是条件类型的一种非常简单的用法,所以不确定发生了什么。有什么想法吗?
澄清一下,我并没有真正尝试实现这个特定的功能。我只是在试验条件类型,想更好地理解为什么这实际上不起作用。
【问题讨论】:
-
这里已经有很多答案,但我想确保链接到microsoft/TypeScript#33912,这是一个 GitHub 问题,专门讨论泛型函数中的条件类型可分配性失败。这可能是回答“为什么这不起作用”的好地方。
标签: typescript