1

有谁知道为什么我不能在我的 TypeScript 代码中使用 jQuery(看起来没有其他人没有这个问题)。

我在 VS2012 中创建了一个新的 TypeScript 项目,包括 jquery.d.ts,在主 html 文件中添加了指向 jquery cdn 的脚本标签,并在主 app.ts 文件中添加了“

///  <reference path="jquery.d.ts" />

在文件顶部和简单的一行“$("something").hide();”下面。智能感知工作正常,但当我尝试编译它时,我收到代码 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) 默认.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>
4

2 回答 2

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" />
于 2012-11-04T19:45:19.583 回答
0

jquery.d.ts外观如何?

它应该是这样的

interface JQuery {
hide();
}
interface JQueryStatic {
(query: string): JQuery; 
(ready: () => any): any;
}
declare var $: JQueryStatic;

现在将其作为依赖项添加到app.tslike 中(不喜欢在文件名中添加句点,所以我将其称为 custom.ts

/// <reference path="custom.ts" />
$(function(){$("body").hide();});

现在构建解决方案,如果您安装了Web Essentials,它将为您生成custom.jsandapp.js

现在运行项目,希望你不会看到任何东西,因为它body会被隐藏。

有关更多信息,请阅读TypeScript 语言规范

于 2012-11-05T11:42:08.233 回答