我正在开发一个项目,将类型注释(.d.ts文件)添加到现有的大型Javascript代码库中。 .d.ts文件将与Javascript一起使用,但我无法对Javascript进行任何更改以支持此项目。
在现有代码中,有类似这样的内容:
...
window.MyGlobal.Service = function () {
}
window.MyGlobal.Service.prototype = {
baseURL: 'http://...';
}
...
期望我们稍后会做类似
的事情var svc = new window.MyGlobal.Service();
我无法弄清楚如何在TypeScript中表示这一点。我有
interface Service {
baseURL: string;
}
但我不确定在我的界面中放入什么样的MyGlobal。我试过了
interface MyGlobal {
Service: Service;
}
但我不能使用new()。我可以把它改成
interface MyGlobal {
Service(): void;
}
这将让我使用new();但它丢失了有关Service接口的类型信息。
是否可以在TypeScript中处理这种情况?
答案 0 :(得分:1)
选项1:
declare module MyGlobal {
class Service {
baseURL: string;
}
}
interface Window {
MyGlobal: { Service: MyGlobal.Service; }
}
var svc = new window.MyGlobal.Service();
var x = svc.baseURL;
选项2:
declare module MyGlobal {
interface Service {
baseURL: string;
}
}
interface Window {
MyGlobal: { Service: { new(): MyGlobal.Service } }
}
var svc = new window.MyGlobal.Service();
var x = svc.baseURL;