[解決済み】TypeScript: 空の型付きコンテナ配列の作成
質問
TypeScriptで「3つの犯罪」というシンプルなロジックゲームを作っています。
TypeScriptで型付き配列を事前確保しようとすると、こんな感じになる。
var arr = Criminal[];
というエラーが表示されます。 式詞の形式をチェックします。
また、次のようなことも試してみました。
var arr : Criminal = [];
そして、これは "cannot convert any[] to 'Criminal' を生成しました。
TypeScriptでこれを行うにはどうすればよいのでしょうか?
どのように解決するのですか?
既存の回答は選択肢を見逃しているので、ここに完全なリストを掲載します。
// 1. Explicitly declare the type
var arr: Criminal[] = [];
// 2. Via type assertion
var arr = <Criminal[]>[];
var arr = [] as Criminal[];
// 3. Using the Array constructor
var arr = new Array<Criminal>();
-
明示的に型を指定することは、変数宣言で型推論が失敗した場合の一般的な解決策です。
-
を使う利点は タイプアサーション (キャストと呼ばれることもあるが、TypeScriptでは実際にはキャストではない)はどんな式に対しても機能するので、変数が宣言されていないときでも使うことができる。タイプアサーションには2つの構文があるが、JSXとの組み合わせで動作するのは後者のみで、気にする必要はない。
-
Arrayコンストラクタの使用は、この特定のユースケースにおいてのみ役立つものですが、個人的には最も読みやすいと思います。しかし、若干の パフォーマンスへの影響 実行時*に また、もし誰かが狂ったようにArrayのコンストラクタを再定義したら 意味が変わってしまう可能性があります。 .
個人的な好みの問題ですが、私は3番目の選択肢が最も読みやすいと思います。ほとんどの場合、前述のデメリットは無視できるもので、読みやすさが最も重要な要素です。
*: 面白いことに、この記事を書いた時点では、Chromeでは60%の性能差があり、Firefoxでは測定可能な性能差がありませんでした。
関連
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] オブジェクトが配列であるかどうかを確認するにはどうすればよいですか?[重複]。
-
[解決済み] JavaScriptで配列を空にするにはどうしたらいいですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]
-
[解決済み] JavaScriptの配列宣言で「Array()」と「[]」はどう違うのですか?