在TypeScript代码中添加了JQuery定义,但它没有成为转换后的JS文件的一部分

时间:2017-02-07 09:19:23

标签: jquery typescript typescript-typings

我了解到如果我安装并导入TypeScript库,它们将被编译为JS并包含在JS构建输出中,但下面的脚本不是这种情况,我不知道原因。

main.ts

/// <reference path="../typings/globals/jquery/index.d.ts" />
var data  = "Hello Tahir";
$("div").text(data);

上面的代码不会产生任何错误并反编译为

main.js

/// <reference path="../typings/globals/jquery/index.d.ts" />
var data = "Hello Tahir";
$("div").text(data);
//# sourceMappingURL=main.js.map

正如您所看到的,jQuery库不是最终输出的一部分,因此我的代码在浏览器的控制台中产生以下错误

  

ReferenceError:$未定义

对我来说,解决此问题的唯一方法是将jquery添加到我的模板文件的标题中,如

<script
        src="https://code.jquery.com/jquery-3.1.1.js"
        integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA="
        crossorigin="anonymous"></script>

但我相信这不是正确的做法,必须有一些我不知道的东西。

需要指导,谢谢!

1 个答案:

答案 0 :(得分:1)

.d.ts个文件包含外部库类型的定义;它们与外部库本身不同。将TypeScript代码转换为JavaScript时会删除这些类型,因为JavaScript没有显式输入。因此,.d.ts文件在转换后的代码中没有用处。它就是为了让TypeScript转换器能够对外部库进行类型检查。

要解决您的问题,您必须将您正在使用的JQuery文件复制到您自己的scripts文件夹(或您的脚本所使用的任何文件夹),并且您必须在HTML标头中引用此脚本文件。