2014-11-23 29 views
1

在打字稿文件,我已經定義了一個三維數組:如何刪除打字稿警告:屬性「長」的類型不存在「{}」

var myArr = ['one', [[19, 1], [13, 1], [86, 1], [12, 2]], 
      'two', [[83, 1], [72, 1], [16, 2]], 
      'three', [[4, 1]]]; 

function testArray(){ 
    console.log(myArr[1].length); 
} 

我得到的length屬性下的警告:

住宅「長」的類型不存在「{}」

有什麼我可以做刪除此警告?

+0

工作正常,也許你的錯誤在別處。 http://jsfiddle.net/yxrufk86/ – 2014-11-23 13:30:47

+0

我認爲這是因爲你正在混合字符串和數組,雖然兩者都有'length'屬性,但沒有共同的接口,所以數組的類型是一個數組的物體。 – Guffa 2014-11-23 13:34:24

+0

@ Omri:是的代碼確實工作正常。這不是一個錯誤。這只是一個警告,但它阻礙了發展,因爲它是一個「虛假」的警告,我不能擺脫它... – RaelB 2014-11-23 14:00:49

回答

2

選項1:升級到出血邊緣的編譯器,並得到工會類型

選項2:類型註釋添加變量聲明:

var myArr: any[] = ['one', [[19, 1], [13, 1], [86, 1], [12, 2]], 
      'two', [[83, 1], [72, 1], [16, 2]], 
      'three', [[4, 1]]]; 

function testArray(){ 
    console.log(myArr[1].length); 
} 
+0

謝謝。選項2有效。選項1是什麼意思?我正在使用TypeScript 1.3.0 – RaelB 2014-11-23 19:13:12

+0

下一個版本1.4將具有聯合類型。你可以從GitHub倉庫抓取tsc.js來試用它。 – 2014-11-23 22:54:34

相關問題