interface A {
a: number;
}
let myVar: A = {
a: 123
};
myVar = Object.assign({}, myVar, {
b: 456
});
为什么TypeScript不会抱怨通过Object.assign()
调用重新分配myVar
?TypeScript函数通用类型交集不正确
鉴于该Object.assign()
呼叫的类型定义为:
assign<T, U, V>(target: T, source1: U, source2: V): T & U & V;
...和(返回类型)的三种类型中我的电话的交集不匹配interface A
,不应该编译挑那个?
的问题是不相关的打字稿不能够推断出类型的函数调用,因为如果我更改了代码:
interface A {
a: number;
}
interface B {
b: number;
}
interface C {}
let myVar: A = {
a: 345
};
myVar = Object.assign<C, A, B>({}, myVar, {
b: 345
});
...它仍然不抱怨。
我使用打字稿2.2.1和“noImplicitAny”编译器标志设置为“真”。
我觉得这个答案扑朔迷离,虽然它确实让我思考的真正原因。我认为我的答案更加简洁和准确。 – pleasedesktop
我已经把报价从正式打字[文件](https://www.typescriptlang.org/docs/handbook/type-compatibility.html)。究竟是什么让人困惑? –
在你链接的文档页面的上下文那句话,有一定道理,但它是在这个问题的背景下混乱和误导。我的downvote道歉,我试图摆脱它,因为你没帮我找到了答案,但它不会让我。 – pleasedesktop