typescript - Hur specificerar man att en egenskapstyp måste utvidga en annan typ?
Jag försöker deklarera en typ som endast ska acceptera objekt där de utvidgar en annan typ.
Till exempel:
export interface A extends B {
aProp: string;
}
export interface B {
bProp: string;
// Feels wrong but how to tell something like ReadonlyArray<subClass extends B>?
// I need children to contain A (or anything that extends B) & B properties
children: ReadonlyArray<any & B>;
childrenThatDoesntWork: ReadonlyArray<any extends B>; // <-- error here
}
class SomeClass {
fun(obj: any extends B) { // <-- error '?' expected
}
}
Hur gör man detta?
Tack!
Svar #1
Här är min lösning:
export interface A extends B {
aProp: string;
}
export interface B {
bProp: string;
// Feels wrong but how to tell something like ReadonlyArray<subClass extends B>?
// I need children to contain A (or anything that extends B) & B properties
children: ReadonlyArray<A | B>;
childrenThatDoesntWork: ReadonlyArray<B>;
}
class SomeClass {
fun<T extends B>(obj: T) {
}
}
Vänligen kontrollera om det fungerar för ditt fall. Om inte, vänligen tillhandahåll koden för tester
