Припустимо, є файл набору тексту для бібліотеки 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
(що не працює і призводить до помилки "Не вдається знайти ім'я I2"). Заздалегідь спасибі.
Редагувати : трохи погравши в TS Playground, я помітив, що наступний код досягає саме того, що я хочу:
declare var x: I2;
let y: typeof x.y;
Однак для цього потрібно x
оголосити надлишкову змінну . Я шукаю спосіб досягти цього без цієї заяви.