Javascript 使用带有TypeScript的第三方js文件
我是typeScript新手,我希望能够使用没有定义文件的第三方库。typescript允许您使用外部库吗 我尝试使用的库是filesaver.js 是否需要为此库创建定义文件 我只需要有人给我指出正确的方向 非常感谢 typescript允许您使用外部库吗 很容易。你只需要告诉typescript这件事。让我们看看你的情况 我尝试使用的库是filesaver.js 只需一个简单的函数Javascript 使用带有TypeScript的第三方js文件,javascript,typescript,Javascript,Typescript,我是typeScript新手,我希望能够使用没有定义文件的第三方库。typescript允许您使用外部库吗 我尝试使用的库是filesaver.js 是否需要为此库创建定义文件 我只需要有人给我指出正确的方向 非常感谢 typescript允许您使用外部库吗 很容易。你只需要告诉typescript这件事。让我们看看你的情况 我尝试使用的库是filesaver.js 只需一个简单的函数saveAs。最简单的声明: declare var saveAs:any; 现在,以下内容将很好地编译:
saveAs
。最简单的声明:
declare var saveAs:any;
现在,以下内容将很好地编译:
declare var saveAs:any;
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
saveAs(blob, "hello world.txt");
要编写更高级的声明,请查看:
注
更精确但可能限制过度的样本:
declare function saveAs(data:Blob , filename:string );
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
saveAs(blob, "hello world.txt");
出于实用但可能不太符合犹太教义的范畴,一种不那么优雅和非类型脚本的方法是简单地声明但不分配要与类型脚本一起使用的变量/函数。这不会给您Intellisense,但它允许您非常快速地使用库,而无需创建任何声明或滚动您自己的d.ts文件
例如,以下是一个角度示例,用于在app.core模块上将OidcTokenManager作为常量提供:
这将生成TS2304-找不到名称“OidcTokenManager”类型脚本错误
但是,通过简单地将OidcTokenManager声明为any类型,TypeScript将允许您通过:
((): void => {
let OidcTokenManager: any;
angular
.module('app.core')
.constant('OidcTokenManager', OidcTokenManager);
})();
在typescript中调用外部库而不产生编译错误的另一种方法是使用窗口“myglobalfunction”表示法 例如:
jQuery call: window["$"]
fileSaver.js : window["saveAs"](blob, "hello world.txt");
等等
typescript中的这些调用不会生成编译错误,但它们是调用相同标准函数的完整功能方式。上,您可以查看“使用其他JavaScript库”部分,以找到您寻求的解决方案。希望这有帮助。警告:这种类型的符号永远不应该在TS中使用,因为任何执行树柄或丑陋代码的编译器都将重命名,从而更改函数名,导致此类代码失败,因为字符串不会更新以反映丑陋的函数名。很好,此代码仅适用于普通代码,不在模糊代码上。
jQuery call: window["$"]
fileSaver.js : window["saveAs"](blob, "hello world.txt");