2016-04-10 85 views
0

這是一個新的計算機設置。所有的代碼都可以在我的舊的comupter上編譯和運行。編譯錯誤,但js得到生成

我有2個項目在我的解決方案比使用打字稿。 第一次編譯沒有問題。 第二個在編譯時顯示錯誤,但在保存時生成js。 我已經安裝vs 2013更新5,然後安裝打字稿1.8.5。 我也有安裝vs2015。 安裝vs2015之後,我修復了打字稿sdk。

它們必須有2個不同的編譯器設置,並且我的項目中有一個設置不正確。 我已經深入瞭解了csproj,並且比較了2個項目,但沒有發現打字稿丟失/不同的參數....

這就像它不採取新版本。我知道它編譯的代碼中出現語法錯誤。

如果有人有這個問題,請幫助我。

PS原諒我的英語不好,IM法國...

UPDATE:代碼爲例不要編譯

public doSomething(errorCallBack?: (failCallback1?: JQueryPromiseCallback<any> | JQueryPromiseCallback<any>[], ...failCallbacksN: Array<JQueryPromiseCallback<any> | JQueryPromiseCallback<any>[]>) => void) 
{} 

錯誤:

Error 218 Build: ',' expected. 
+0

你得到的錯誤信息是什麼? – Alex

+0

沒有具體錯誤。它就像是一箇舊版本。文件中的一些語法錯誤我知道編譯...我編輯了我的問題 – Benoit

+0

在編寫代碼時是否在編輯器中看到錯誤,或者它只在編譯器輸出中出現? – Alex

回答

0

我發現比Visual Studio IDE中使用1.8.9是和編譯器爲1.0。這就是爲什麼我有這樣的編譯錯誤。

當我在vs2013命令提示符中使用「tsc -v」命令時,它顯示1.0。 當我使用「where tsc」時,它只顯示目錄爲1.0而不是1.8.9。

所以,我用1.8.9替換了1.0的內容。我不使用1.0。 現在我有一個1.0目錄希望有1.8.9。

我認爲這不是它應該的方式,但我需要它的工作。

它有一個.target文件,我可以修改,但我不希望這樣做。

0

減小的無法編譯的示例代碼:

class Foo { 
    public doSomething(errorCallBack?: (failCallback1?: any, ...failCallbacksN: Array<any>[]>) => void) 
    { } 
} 

您在...failCallbacksN: Array<any>[]>中有主要的語法錯誤。你需要像...failCallbacksN: Array<any>例如爲:

class Foo { 
    public doSomething(errorCallBack?: (failCallback1?: any, ...failCallbacksN: Array<any>) => void) 
    { } 
} 

但JS獲取生成

這是由設計。有效的JavaScript將始終生成有效的TypeScript(即使存在錯誤)。在TypeScript中,類型被認爲對發射器是不可見的,所以即使存在類型錯誤,TypeScript也會嘗試進行優雅恢復並生成JavaScript。

更多

明白爲什麼打字稿:https://basarat.gitbooks.io/typescript/content/docs/why-typescript.html