1

TypeScriptコードでjQueryを使用できない理由を誰かが知っていますか(他の誰もその問題を抱えていないようです)。

VS2012 で新しい TypeScript プロジェクトを作成し、jquery.d.ts を含め、メインの html ファイルに jquery cdn を指すスクリプト タグを追加し、メインの app.ts ファイルに "

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

ファイルの先頭と単純な行「$("something").hide();」の下にあります。インテリセンスは正常に動作しましたが、コンパイルしようとするとコード 1 のエラーが発生します。コマンド ウィンドウで確認したところ、「名前 '$' は現在のスコープに存在しません」と表示されました。

誰が何が起こっているのか知っていますか?通常、コードを異なるファイルに分割するのは非常に困難で、アプリ全体を 1 つのファイルに記述する必要がありました。モジュール、インポート、エクスポートを使用しようとしましたが、すべてがコンパイラによってスローされたスコープエラーになります:/

私を救ってください

EDIT @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.tsます(ファイル名にピリオドを入れるのはあまり好きではないので、custom.tsと呼びます

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

Web Essentialsがインストールされている場合は、ソリューションをビルドcustom.jsapp.jsます。

プロジェクトを実行すると、 が非表示になるため何も表示されないことを願っていますbody

詳細については、TypeScript Lang Specsを参照してください。

于 2012-11-05T11:42:08.233 に答える