Załóżmy, że istnieje plik do pisania dla biblioteki X, który zawiera kilka interfejsów.
interface I1 {
x: any;
}
interface I2 {
y: {
a: I1,
b: I1,
c: I1
}
z: any
}
Aby pracować z tą biblioteką, potrzebuję przekazać obiekt, który jest dokładnie tego samego typu co I2.y
. Mogę oczywiście stworzyć identyczny interfejs w moich plikach źródłowych:
interface MyInterface {
a: I1,
b: I1,
c: I1
}
let myVar: MyInterface;
ale potem spoczywa na mnie ciężar utrzymywania go na bieżąco z tym z biblioteki, ponadto może być bardzo duży i powodować duplikowanie kodu.
Czy zatem istnieje sposób na „wyodrębnienie” typu tej konkretnej właściwości interfejsu? Coś podobnego do let myVar: typeof I2.y
(co nie działa i powoduje błąd „Nie można znaleźć nazwy I2”). Z góry dziękuję.
Edycja : po zabawie trochę w TS Playground zauważyłem, że następujący kod osiąga dokładnie to, co chcę:
declare var x: I2;
let y: typeof x.y;
Jednak wymaga x
zadeklarowania zbędnej zmiennej . Szukam sposobu, aby to osiągnąć bez tej deklaracji.