TypeScript: Hàm con trong DefinitelyTyped
Tôi đang làm việc để tạo DefinitelyTyped cho gói riêng tư (tôi không thể thay đổi mã nguồn) và tôi không thể tìm thấy cách nào để triển khai kiểu như thế này:
GlobalNameSpace.foo = function(arg) {}
GlobalNameSpace.foo.bar1 = function(arg) {} ;
GlobalNameSpace.foo.foo2 = function(arg) {};
Tôi đã cố gắng sử dụng class trong index.d.ts của mình nhưng foo không phải là một class, thật tiếc là nó là một hàm bình thường.
nỗ lực của tôi:
declare namespace GlobalNameSpace {
function foo(options: any): void;
}
Có ai biết làm thế nào để tôi giải quyết việc này không?
Câu trả lời #1
Bất kỳ hàm nào, chẳng hạn như:
function foo(options: any): void;
có thể được biểu diễn dưới dạng một đối tượng có thể gọi được, như sau:
const foo: {
(options: any): void;
}
Ngoài ra, bất kỳ đối tượng nào cũng có thể có các thuộc tính bổ sung. Các thuộc tính này cũng có thể được gọi, vì vậy đoạn sau đây hoàn toàn hợp lệ:
declare namespace GlobalNameSpace {
const foo: {
(options: any): void;
bar1: { (arg: any): void };
foo2: { (arg: any): void };
}
}
Lưu ý rằng một biến const hơi khác so với một function. Ví dụ, các hàm được hoisting. Nhưng trong trường hợp trên, chúng là tương đương.
