types - TypeScript'te bir dizinin, bir string birleşiminin tüm öğelerini içerdiğinden emin olun
Bir dizi birleşimi verildiğinde
type UnionOfStrings = "zzz" | "yyy";
Bir dizi nesnedeki her dize için bir girişin olduğundan nasıl emin olunur?
interface Obj {
a: string;
b: UnionOfStrings;
}
const arrayOfObjects: Obj[] = [
{
a: "",
b: "zzz",
},
];
// Error: missing entry for `b: "yyy"`
Cevap #1
Bunu bir nesne dizisi ile yapamazsınız. Bir nesneyi bir diziye koyar koymaz, nesnenin bir birleşimin hangi üyesini içerdiğine dair tür bilgisi kaybolur. Bunu belki demetlerle yapabilirsiniz - ama emin değilim.
Ancak türü şu şekilde yazabilirsiniz
type UnionOfStrings = "zzz" | "yyy";
type MapOfObjects = { [k in UnionOfStrings]: { a: string, b: k } }
const arrayOfObjects: MapOfObjects = {
zzz: {
a: "",
b: "zzz",
},
}
aşağıdaki hataya sahiptir Türü '{ zzz: { a: string; b: "zzz"; }; }' içinde 'yyy' özelliği eksik ancak 'MapOfObjects' türünde gerekli.(2741)
