1. ホーム
  2. typescript

[解決済み] TypeScriptの文字列型配列のテスト

2022-05-13 14:08:31

質問

TypeScriptで変数が文字列の配列であるかどうかを調べるにはどうしたらよいでしょうか。 こんな感じです。

function f(): string {
    var a: string[] = ["A", "B", "C"];

    if (typeof a === "string[]")    {
        return "Yes"
    }
    else {
        // returns no as it's 'object'
        return "No"
    }
};

TypeScript.ioはこちらです。 http://typescript.io/k0ZiJzso0Qg/2

編集:string[]のテストを依頼するためにテキストを更新しました。これは以前はコード例のみでした。

どのように解決するのですか?

をテストすることはできません。 string[] をテストすることはできませんが、一般的なケースでは Array をテストするのは簡単で、JavaScript と同じように https://stackoverflow.com/a/767492/390330 (私は Array.isArray(value) ).

もし、特に string のような配列にしたい場合は、以下のようにします。

if (Array.isArray(value)) {
   var somethingIsNotString = false;
   value.forEach(function(item){
      if(typeof item !== 'string'){
         somethingIsNotString = true;
      }
   })
   if(!somethingIsNotString && value.length > 0){
      console.log('string[]!');
   }
}

基本型ではない)クラスの配列をチェックする必要がある場合

if(items && (items.length > 0) && (items[0] instanceof MyClassName))

すべての項目が同じ型であることが確認できない場合

items.every(it => it instanceof MyClassName)