可能是重复问题,但很难构造一个问题搜索来辨别。
问题出现在 typescript@latest
版本的 3.0.1
中。
考虑到问题的性质,怀疑它在 typescript@next
版本中没有被修复。抱歉没有进行测试。
类型推断错误参数
代码
// A *self-contained* demonstration of the problem follows...
// Just paste this code into your favorite TypeScript IDE
function foobar_good(arg: unknown): void | number {
if (typeof arg != 'number') {
return
}
return arg;
}
function foobar_bad(arg: unknown): void | number {
if (typeof arg != 'number') {
return
}
arg = arg;
return arg;
}
[ts] 类型 'unknown' 不能分配给类型 'number | void'。
类型 'unknown' 不能分配给类型 'void'。
预期行为:
应该编译。
实际行为:
无法编译。
1条答案
按热度按时间72qzrwbm1#
与 #25720 相关。我们应该将
unknown
的赋值处理为缩小。简化的复现: