Предположим, есть файл ввода для библиотеки X, который включает в себя некоторые интерфейсы.
interface I1 {
x: any;
}
interface I2 {
y: {
a: I1,
b: I1,
c: I1
}
z: any
}
Чтобы работать с этой библиотекой, мне нужно пройти вокруг объекта, который имеет тот же тип, что и I2.y
. Я могу, конечно, создать идентичный интерфейс в своих исходных файлах:
interface MyInterface {
a: I1,
b: I1,
c: I1
}
let myVar: MyInterface;
но затем я беру на себя обязательство постоянно обновлять его по сравнению с библиотекой, причем она может быть очень большой и приводить к большому количеству дублирования кода.
Следовательно, есть ли способ "извлечь" тип этого специфического свойства интерфейса? Что-то похожее на let myVar: typeof I2.y
(которое не работает и приводит к ошибке "Can not find name I2" ). Спасибо заранее.
Изменить: после небольшого воспроизведения в TS Playground я заметил, что следующий код достигает именно того, что я хочу:
declare var x: I2;
let y: typeof x.y;
Однако для этого требуется резервированная переменная x
. Я ищу способ добиться этого без этой декларации.