2017-08-04 186 views
1

我在Visual Studio中使用TypeScript的內置支持,因此當我保存TypeScript文件時,它們被轉換爲JavaScript文件。Visual Studio 2017與TypeScript的編譯錯誤

我有以下腳本:

declare namespace myLib { 
    function makeGreeting(s: string): string; 
    let numberOfGreetings: number; 
} 

$(document).ready(function() { 
    alert("bp1"); 
}); 

我tsconfig.json文件包含以下內容:

{ 
    "compileOnSave": true, 
    "include": [ "*.ts" ], 
    "compilerOptions": { 
    "allowJs": true, 
    "sourceMap": true, 
    "outFile": "..\\js\\site.js", 
    "target": "es3" 
    }, 
    "typeAcquisition": { 
    "enable": true, 
    "include": [ "jquery" ] 
    } 
} 

當我保存文件時,它transpiled爲JavaScript沒有任何問題,但是當我重建項目我遇到如下錯誤:

TS2304 Build:找不到名稱'$'。演示文稿(Presentation \ Presentation)C:\ Development-MVC \ NET \ Ev \ Web \ UI \ Presentation \ Content \ ts \ welcome.ts 6

我認爲這是與類型獲取功能在構建工作,但我不知道如何解決它。

回答

1

自動獲取類型定義似乎不適用於jQuery。有limited information on type acquisition here

這是另一種方法。

確保您已經安裝了jquery及其類型。我們可以使用命令行中的NPM來完成此操作。

npm install jquery --save 
npm install @types/jquery --save-dev 

或者,我們可以手動編輯package.json文件。

{ 
    "dependencies": { 
    "jquery": "^3.2.1" 
    }, 
    "devDependencies": { 
    "@types/jquery": "^3.2.11"  <----- These types will be necessary. 
    } 
} 

安裝jQuery及其類型將解決Cannot find name '$'錯誤。

之後,在你的tsconfig中,確保使用domes2015庫。否則,編譯器會在解析jquery之後輸出新的錯誤。

{ 
    "compileOnSave": true, 
    "include": [ "*.ts" ], 
    "compilerOptions": { 
    "allowJs": true, 
    "sourceMap": true, 
    "outFile": "..\\js\\site.js", 
    "target": "es3", 
    "lib": [      <---- These two libs will be necessary. 
     "dom", 
     "es2015" 
    ] 
    }, 
    "typeAcquisition": { 
    "enable": true, 
    "include": [ "jquery" ] 
    } 
} 
+1

最後是使用npm安裝@types包的情況,我已經使用Bower安裝了jquery。 tsconfig設置沒有區別。我還必須將' true '添加到項目文件中。 –