TypeScript和jQuery范围错误 - 编译时的代码1

时间:2012-11-04 19:35:41

标签: jquery scope typescript

有谁知道我为什么不能在我的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>

2 个答案:

答案 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.jsapp.js

现在运行该项目,希望您不会看到任何内容,因为body将被隐藏。

了解更多信息请阅读TypeScript Lang Specs