2017-11-25 4 views
1

私は活字体で、このコードスニペットを持っている:ReadonlyArrayはどのクラスをTypeScriptで継承しますか?

const arr: ReadonlyArray<string> = [ 
    "123", 
    "234" 
]; 

arr.push("345"); 

TSコンパイラはエラーを示していますProperty 'push' does not exist on type 'ReadonlyArray<string>'。もちろん、私はこの配列を変更/変更することはできませんが、質問は - ReadonlyArrayの基本クラスは何ですか?標準Arrayクラスから継承していますか?

+0

これは読んでいる - あなたはそれにPUSHの新しい項目を傾けることはできません。その後、書き込み可能になります。 –

+0

この配列は読み込み専用であることは明らかですが、私の質問は、どのように 'ReadonlyArray'がどの基本クラスから派生したのかを理解することです。 –

+0

答えを見てください:: –

答えて

2

https://www.typescriptlang.org/docs/handbook/interfaces.html あなたは

https://github.com/Microsoft/TypeScript/blob/master/src/lib/es5.d.ts#L978

へ 以上のソース、頭をしたい場合は

TypeScript comes with a ReadonlyArray<T> type that is the same as Array<T> with all mutating methods removed, so you can make sure you don’t change your arrays after creation

は、(その定義は、現在のバージョンではライン978上にある)と述べています。

+0

ReadonlyArray の型は、配列と同じであり、すべての変更メソッドが削除されています。 ' これは、彼らが次のようなことをしたことを意味します: 'ReadonlyArray.prototype.push = null'? –

+0

クール、ありがとう! それは私が探していたものです。 –

関連する問題