考虑这个简单的片段。我也把它粘贴在这里:
type A =
| {
b: number;
}
| {
c: number;
};
function f1(a: A) {
if ('b' in a) {
return a['b']; // No problem!
}
return 42;
}
function f2(a: A) {
const key = 'b';
if (key in a) {
return a[key]; // Property 'b' does not exist on type 'A'
}
return 42;
}
Run Code Online (Sandbox Code Playgroud)
为什么 of 的类型没有a缩小为{b: number}in f2?(因为它是为了f1)