我正在开展一个项目,将类型注释(一个 .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();但它丢失了有关服务接口(interface)的类型信息。
是否可以在 TypeScript 中处理这种情况?
最佳答案
选项 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;
关于typescript - 当我无法修改原始 Javascript 时,如何在 TypeScript 中表示一个 "standard"Javascript 对象构造函数(new ())?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17864522/