Bug报告
当使用instanceof为具有可选字段的泛型类时,TypeScript在类型上缩小错误
🔎 搜索词
typescript instanceof模板可选缩小
🕗 版本与回归信息
似乎该bug存在于所有版本中:旧版、实际版和夜间版
⏯ Playground链接
https://www.typescriptlang.org/play?target=8&ts=4.8.0-dev.20220602#code/MYGwhgzhAECiA8sB80DeAoaXoFMD8AXHANzoC+66okMAgvAJIo4AeALjgHYAmMCTGbNABmASxwhuRTgFcAtgCMcAJ2gBeaAAZSFKuCjRaARkbN2XXodNpM2MRO5HC0WYpU7K1A7QBM11hw8dNaCduKSRtLySqoaRh7owjKcwGyiAPacIqYAFGBE9K4xSACUNkKiwtB50KKcEGxgKTjpVcZloUJYYAB09hGkQhQVVTV1DU3ALW0+HbZd0L39joPYFBRAA
💻 代码
class E<E> {
e?: E;
}
class A<I> extends E<I>{
field: number = 0;
}
class A1<I> extends A<I> {
field1?: number;
}
class A2<I> extends A<I> {
field1: number = 1;
}
function f<I>(a: A<number>) {
if (a instanceof A1) {
a.field1;
}
if (a instanceof A2) {
a.field1;
}
}
🙁 实际行为
在第一个if中,属性'field1'不存在于类型A中,变量a缩小到A
🙂 预期行为
在第一个if中,变量a缩小到A1,并且属性field1存在
1条答案
按热度按时间ffscu2ro1#
简化后的文本内容为:
我有点惊讶这个错误从3.3.3版本开始就一直存在,而且据我所知没有其他报告。