1. ホーム
  2. ジャバスクリプト

[解決済み】TypeScript: 空の型付きコンテナ配列の作成

2022-04-04 16:55:18

質問

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>();

  1. 明示的に型を指定することは、変数宣言で型推論が失敗した場合の一般的な解決策です。

  2. を使う利点は タイプアサーション (キャストと呼ばれることもあるが、TypeScriptでは実際にはキャストではない)はどんな式に対しても機能するので、変数が宣言されていないときでも使うことができる。タイプアサーションには2つの構文があるが、JSXとの組み合わせで動作するのは後者のみで、気にする必要はない。

  3. Arrayコンストラクタの使用は、この特定のユースケースにおいてのみ役立つものですが、個人的には最も読みやすいと思います。しかし、若干の パフォーマンスへの影響 実行時*に また、もし誰かが狂ったようにArrayのコンストラクタを再定義したら 意味が変わってしまう可能性があります。 .

個人的な好みの問題ですが、私は3番目の選択肢が最も読みやすいと思います。ほとんどの場合、前述のデメリットは無視できるもので、読みやすさが最も重要な要素です。

*: 面白いことに、この記事を書いた時点では、Chromeでは60%の性能差があり、Firefoxでは測定可能な性能差がありませんでした。