【发布时间】:2021-09-16 00:18:05
【问题描述】:
我有这样的代码:
interface FirstType {
id: number;
email: string;
lastname: string;
name: string;
password: string;
phone: string;
}
interface SecondType {
id: number;
email: string;
lastname: string;
name: string;
password: string;
phone: string;
en: LangType;
}
interface LangType {
name: string;
surname: string;
}
type ObjType = FirstType | SecondType;
const data: [FirstType, SecondType] = [
{
id: 1,
email: "sd",
lastname: "ks",
name: "sd",
password: "sfd",
phone: "sdf",
},
{
id: 1,
email: "sd",
lastname: "ks",
name: "sd",
password: "sfd",
phone: "sdf",
en: { name: "a", surname: "b" },
},
];
const language = "en";
data.map((obj: ObjType) => {
const newObj: {
[key: string]: ObjType[keyof ObjType];
} = { key: obj.id };
Object.keys(obj).forEach((key) => {
const typedKey = key as keyof ObjType;
newObj[key] = obj[typedKey];
if (typedKey !== "id" && typedKey === language && obj[typedKey]) {
for (let value in obj[typedKey] as LangType) {
newObj[value] = obj[typedKey][value];
}
}
});
return newObj;
});
但我收到打字稿错误: "TypeError: 这个条件总是返回 'false',因为类型 '"id"' 和 '"en"' 没有重叠。"
如何解决?我尝试了很多东西,但没有任何效果
已更新。现在出现一个新错误:“此条件将始终返回 'false',因为类型 '"email" | "lastname" | "name" | "password" | "phone"' 和 '"en"' 没有重叠。"
【问题讨论】:
-
SecondType有属性en但你使用ru?这怎么可能? -
@Apostolos 抱歉,实际上是“en”,已更正问题
-
Qwerty,不,你没有
标签: javascript reactjs typescript typescript-typings