2016-12-16 93 views
5

我想將類型註釋添加到現有的代碼,我有一個數組實例,雙倍作爲一個對象設置自定義屬性。像這樣:是否可以使用自定義屬性註釋數組?

const foo = []; 
foo[0] = 13; 
foo.push(42); 

foo.superLevel = 'extreme'; // Flow complains about this 

我想我可能會沿着這行聲明一個新的類型,稱爲SuperArray,東西:

type SuperArray = Array<number> & { 
    superLevel: string, 
} 
const foo: SuperArray = []; 
// ... 

View on flowtype.org/try

但是,這並不工作。我已瀏覽並瀏覽了文檔,但未能找到答案。

A)是否支持此操作? B)如果是這樣,如何註釋它。

回答

1

有人發佈了一個有用的和內容豐富的答案(我投了票),但它似乎失蹤了 - 也許是因爲我指出它並沒有完全回答原來的問題,儘管提供了一個很好的解決方法。

總之,他們建議重寫代碼來定義SuperArray作爲擴展陣列,並增加了道具類...

class SuperArray extends Array<number> { 
    superLevel: string 
} 

const foo = new SuperArray(); 

Explore on Flowtype.org/try

這是一個不錯的,乾淨的出路,但我主要是想知道是否可以註釋原始模式 - 就像在一個僅限於編寫獨立聲明來描述第三方模塊的情況下一樣。

+1

答案來自我,我徹底刪除了它,因爲你的名字。我認爲如果它不適合,那麼我最好刪除答案,以增加對Flow有更多見解的人發現問題的機會。 – Tomalak

+0

啊,我明白了。但是,記錄替代方法也很有用。 –

相關問題