gpt4 book ai didi

javascript - 如何在 typescript 文件中导入没有定义文件的js库

转载 作者:IT王子 更新时间:2023-10-29 02:55:21 29 4
gpt4 key购买 nike

随着我们的项目变大,我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理。然而,我们使用许多库作为 amd 模块,我们不想将它们转换为 TypeScript。

我们仍然希望将它们导入到 TypeScript 文件中,但我们也不想生成定义文件。我们怎样才能做到这一点?

例如新的 Typescript 文件:

/// <reference path="../../../../definetelyTyped/jquery.d.ts" />
/// <reference path="../../../../definetelyTyped/require.d.ts" />
import $ = require('jquery');
import alert = require('lib/errorInfoHandler');

这里,lib/errorInfoHandler 是一个包含在我们不想接触的庞大 JavaScript 库中的 amd 模块。

使用上面的代码会产生以下错误:

Unable to resolve external module ''lib/errorInfoHandler'' 
Module cannot be aliased to a non-module type.

这实际上应该产生以下代码:

define(["require", "exports", "jquery", "lib/errorInfoHandler"], function(require, exports, $, alert) {
...

}

有没有一种方法可以将 JavaScript 库作为 amd 模块导入 TypeScript 并在 TypeScript 文件中使用它而无需制作定义文件?

最佳答案

此处给出的 2 个答案的组合对我有用。

//errorInfoHandler.d.ts
declare module "lib/errorInfoHandler" {
var noTypeInfoYet: any; // any var name here really
export = noTypeInfoYet;
}

我对 TypeScript 还是个新手,但看起来这只是一种通过导出一个没有类型信息的虚拟变量来告诉 TypeScript 停止的方法。

编辑

在这个答案的评论中已经指出,您只需声明即可获得相同的结果:

//errorInfoHandler.d.ts
declare module "*";

查看github评论here .

关于javascript - 如何在 typescript 文件中导入没有定义文件的js库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22842389/

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