【发布时间】:2021-06-03 20:40:08
【问题描述】:
这就是我想要做的。我想写一个addIdToAnimal 函数,它接受任何Animal,并为其添加id。
每个动物都有animalType 属性,这是一个enum。
我的问题是:
- 拥有
animalType是为了帮助识别哪个AnimalType对象在后面的过程中(例如,对Animal[]进行交互并根据AnimalType运行不同的逻辑)。但我不确定定义具有固定值的类型是否是最佳实践。非常欢迎其他建议。 - 目前
addIdToAnimal抛出打字稿错误:Types of property 'animalType' are incompatible.我该如何解决这个问题?
enum AnimalType {
Mammal,
Fish,
}
type Animal = Lion | Salmon;
type Lion = {
id: number;
animalType: AnimalType.Mammal;
detail: LionDetail;
};
type Salmon = {
id: number;
animalType: AnimalType.Fish;
detail: SalmonDetail;
};
interface LionDetail {
roar: () => void
}
interface SalmonDetail {
swim: () => void
}
const addIdToAnimal = (animal: Omit<Animal, 'id'>): Animal => {
return {
id: 1,
...animal,
}
}
【问题讨论】:
标签: reactjs typescript react-redux