Giả sử có một tệp nhập cho thư viện X bao gồm một số giao diện.
interface I1 {
x: any;
}
interface I2 {
y: {
a: I1,
b: I1,
c: I1
}
z: any
}
Để làm việc với thư viện này, tôi cần truyền xung quanh một đối tượng có cùng kiểu với I2.y
. Tất nhiên, tôi có thể tạo giao diện giống hệt nhau trong các tệp nguồn của mình:
interface MyInterface {
a: I1,
b: I1,
c: I1
}
let myVar: MyInterface;
nhưng sau đó tôi có gánh nặng phải cập nhật nó với cái từ thư viện, hơn nữa nó có thể rất lớn và dẫn đến trùng lặp mã rất nhiều.
Do đó, có cách nào để "trích xuất" loại thuộc tính cụ thể này của giao diện? Một cái gì đó tương tự như let myVar: typeof I2.y
(không hoạt động và dẫn đến lỗi "Không thể tìm thấy tên I2"). Cảm ơn trước.
Chỉnh sửa : sau khi chơi một chút trong TS Playground, tôi nhận thấy rằng đoạn mã sau đạt được chính xác những gì tôi muốn:
declare var x: I2;
let y: typeof x.y;
Tuy nhiên nó yêu cầu một biến dư thừa x
được khai báo. Tôi đang tìm cách để đạt được điều này mà không cần tuyên bố đó.