2016-10-03 396 views
1

我試圖建立一個VSCode環境與打字稿V2.03的工作很簡單的問題與打字稿及VSCode

我開始了一個簡單的香草JavaScript片段,我可以在節點通過集成的終端測試出來。

function Person() { 
 
    this.name = ""; 
 
} 
 

 
Person.prototype.age = 0; 
 

 
let me = new Person();

我插入打字稿遊樂場網站,它編譯沒有投訴的罰款。

但是,當我創建VSCode一個新的文件,該VSCode編輯抱怨:

enter image description here

如果我與TS-裝載機插件的WebPack運行我得到這個錯誤: enter image description here

當我運行'tsc src/test.ts'時,它無需編譯就可以編譯。

我的問題:

  1. 是我的代碼錯誤或者這只是我應該忽略投訴?
  2. 無論如何告訴VSCode停止向我展示投訴?
+1

請將錯誤信息包含爲文本而不是圖像。搜索引擎沒有辦法索引圖片,而我們中的一些人很老,需要幫助閱讀:)。 –

+0

認爲一個更好的標題... – Gerfried

回答

1

TypeScript over JavaScript的主要優點之一是顯式定義的類型。在這種情況下,配置Person的更好方法是將其定義爲類。這將限制類型爲Person的已知成員的分配。

class Person { 
    name: string; 
    age: number; 

    constructor(){ 
     this.name = ""; 
    } 
} 

let me = new Person(); 
// assignments to known members on the type Person 
me.age = 21; 
+0

我試着你的修改添加':任何',它不會清除錯誤。我仍然遇到錯誤:「TS2350:只有一個無效函數可以用'new'關鍵字來調用。」和「錯誤TS7009:'新'表達式,其目標缺少構造簽名,隱式具有'任何'類型。」我知道TS和VSCode不能是這個錯誤,所以我必須有一個不好的配置或什麼。這個類的例子工作,但我有一個項目與很多現有的函數構造函數,我不想轉換爲類,我希望現有的JS代碼將工作。 – tommy

+0

@tommy - 我修改了我的答案,並刪除了該部分,因爲我現在可以看到,我錯誤地認爲我爲什麼在TS中失敗了。讓我再玩一秒,看看它爲什麼失敗。另一部分雖然是你應該使用打字稿的方式之一,它不同於以前在javascript中使用的方法。我說一種方式,因爲它也可以使用沒有具體類型的接口來完成。 – Igor

+0

我想重申,我可以在沒有投訴的TypeScript遊樂場中輸入我的原始示例。所以它必須是VSCode設置方式的問題。 – tommy