gpt4 book ai didi

TypeScript 错误转换接口(interface)联合字段

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:44 25 4
gpt4 key购买 nike

这是产生错误的最少代码:

interface A1 {
type: "A1";
}
interface A2 {
type: "A2";
}
type AU = A1 | A2;

function foo(obj1: AU) {
const obj2: AU = {
type: obj1.type
/*
Error TS2322:
Type '{ type: "A1" | "A2"; }' is not assignable to type 'AU'.
Type '{ type: "A1" | "A2"; }' is not assignable to type 'A2'.
Types of property 'type' are incompatible.
Type '"A1" | "A2"' is not assignable to type '"A2"'.
Type '"A1"' is not assignable to type '"A2"'.
*/
};
}

这是 TypeScript 错误吗? (我将其作为问题 #20889 发布在他们的 GitHub 上)

还是我没有正确使用这些工具?

最佳答案

当从obj2声明中移除类型部分时——const obj2 = { type: obj1.type }obj2的类型是设置为 { type: 'A1' | 'A2' } 并且代码编译正确。

使用此语句代码也可以正确编译并且类型设置为 AU

让 obj2 = { type: obj1.type } as AU

关于TypeScript 错误转换接口(interface)联合字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47967247/

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