2016-12-16 5 views
5

既存のコードに型注釈を追加しようとしていますが、カスタムプロパティが設定されたオブジェクトとして倍増するArrayインスタンスがあります。だから、同じように:カスタムプロパティで配列に注釈を付けることは可能ですか?

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

View on flowtype.org/try

しかし、それはどちらか動作しません:

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

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

私は、SuperArrayと呼ばれる新しいタイプを宣言し、この線に沿って何かかもしれないと思いました。私はゴーグルして、ドキュメントを閲覧し、答えを見つけられませんでした。

A)これはすべてサポートされていますか?
B)もしそうなら、注釈を付ける方法。

答えて

1

誰かが有益な情報を投稿しましたが(私は投票しましたが)、欠落しているように見えます。おそらく、素晴らしい回避策を提示しても元の質問に正確に答えなかったと指摘したためです。

とにかく、彼らはそれは素敵な、きれいな方法アウトだ...配列を拡張し、小道具を追加するクラスとしてSuperArrayを定義するためのコードを書き換える

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

const foo = new SuperArray(); 

Explore on Flowtype.org/try

を示唆したが、私主に、第三者モジュールを記述するためのスタンドアロンの宣言を書くことに限定される場合のように、元のパターンに注釈を付けることが可能かどうかを調べることに関心がありました。

+1

答えは私からのもので、あなたが名前を付けた理由でそれを正確に削除しました。私は、それが良いフィットでない場合、私はより良い答えを削除して、Flowへのより多くの洞察を持つ誰かが質問を発見する可能性を高めると考えました。 – Tomalak

+0

ああ、そうだ。しかし、代替アプローチを文書化することも有益です。 –

関連する問題