gpt4 book ai didi

typescript :对象传播运算符的类型不正确?

转载 作者:行者123 更新时间:2023-12-03 17:10:03 25 4
gpt4 key购买 nike

考虑这个代码片段:

type Foo = {
x: string;
y: number;
};

let a: Foo = {
x: "@",
y: 3,
};

let b: Partial<Foo> = { x: "#", y: undefined };

let c = { ...a, ...b };
明确类型 c不能是 Foo因为房产 yundefined :运行时值 c{x: "#", y: undefined} (至少在 Chrome 中)。然而 Typescript 推断 c输入为 { x: string; y: number;} .您可以签到 https://www.typescriptlang.org/play对于 4.0.5 版。我糊涂了。
编辑:这是从评论到 github 问题的链接,问题完全相同 https://github.com/microsoft/TypeScript/issues/13195#issuecomment-373178677 .现在这就是答案。

最佳答案

主要问题是类型 Partial<Foo> :

let b: Partial<Foo> = { x: "#", y: undefined };
当您指定变量类型时,ts 编译器通常会忽略赋值的右侧并且不将其用于类型推断(有一些异常(exception),但通常它是这样工作的)。

关于 typescript :对象传播运算符的类型不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64959028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com