gpt4 book ai didi

typescript - 当我无法修改原始 Javascript 时,如何在 TypeScript 中表示一个 "standard"Javascript 对象构造函数(new ())?

转载 作者:搜寻专家 更新时间:2023-10-30 21:54:50 25 4
gpt4 key购买 nike

我正在开展一个项目,将类型注释(一个 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com