有谁知道我为什么不能在我的TypeScript代码中使用jQuery(看起来没有其他人没有这个问题)。
我在VS2012中创建了一个新的TypeScript项目,包括jquery.d.ts,在主html文件中添加了指向jquery cdn的脚本标记,在主app.ts文件中我添加了“< / p>
/// <reference path="jquery.d.ts" />
位于文件顶部,位于简单行“$(”something“)下面.hide();”。 intellisense运行正常,当我尝试编译它时,我得到代码1的错误。我在命令窗口中检查它并且它说“当前范围中不存在名称'$'。”
有谁知道最近发生了什么?一般来说,我很难将代码拆分为不同的文件,我不得不将整个应用程序编写在一个文件中。我尝试使用模块,导入和导出,但所有内容都以编译器抛出的范围错误结束:/
请救救我
编辑@Sohnee 它是VS的默认Typescript项目:
结构:
app.css
app.ts
--app.js
default.htm
jquery.d.ts
修改过的文件:
1)app.ts:
/// <reference path="jquery.d.ts" />
$("body").hide();
2)default.htm
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>TypeScript HTML App</title>
<link rel="stylesheet" href="app.css" type="text/css" />
<script src="http://code.jquery.com/jquery-1.8.0.js"></script>
<script src="app.js"></script>
</head>
<body>
<h1>TypeScript HTML App</h1>
<div id="content"/>
</body>
</html>
答案 0 :(得分:1)
您的参考文件看起来不正确。
/// <_reference path="jquery.d.ts" />"
应该是
/// <reference path="./jquery.d.ts" />
我可以重新创建此问题的唯一方法是使引用路径无效。
例如,在这些情况下,我会遇到与您相同的错误:
缺少斜杠:
/// <reference path="jquery.d.ts">
缺少引号(或缺少两个引号):
/// <reference path="jquery.d.ts />
路径无效:
此代码没有代码示例,但如果您在脚本的不同文件夹中有jquery.d.ts
,则路径必须是相对的。
工作正常:
/// <reference path="./jquery.d.ts" />
答案 1 :(得分:0)
jquery.d.ts
看起来如何?
它应该像
interface JQuery {
hide();
}
interface JQueryStatic {
(query: string): JQuery;
(ready: () => any): any;
}
declare var $: JQueryStatic;
现在将它添加为app.ts
内的依赖项(不是在文件名中放置句点的忠实粉丝所以我将其称为custom.ts
/// <reference path="custom.ts" />
$(function(){$("body").hide();});
现在构建解决方案如果安装了web essentials,它将为您生成custom.js
和app.js
现在运行该项目,希望您不会看到任何内容,因为body
将被隐藏。
了解更多信息请阅读TypeScript Lang Specs