2016-07-05 19 views
0

文字列の長さstring []を調べていますが、データ型が変数var stepData : string | string[]であることがわかりました。 何度か、私は単一の文字列値を取得しています。また、文字列のリストを取得することもできます。配列の長さを使用して、私は他の操作をしています。 私のコードでは、そのstepData.lengthを使用してforループ機能を実行しています。ここに私のコードstepDataの正確な配列の長さを見つけるためにどのようにTypescript文字列| string []配列の長さを調べる

const stepData: string|string[] = this.$stateParams.stepData; 

// Here two possible length value I am getting 
// If the stepData is string[] get length of array value 
// If the stepData is string get the length of string 
// The `lengthVar` depends on below for loop 

if (stepData.length > 0) { 
     var lengthVar = stepData.length; 
    for (var i = 0; i < lengthVar; i++) { 
      // Inside im writing some ajax call 
    } 
} 

サンプルでは、​​私が唯一、私は内部のAJAXメソッドを呼び出しています使用して、配列の値を求めています。もし私が何か間違っていると示唆したり、貴重な提案をお願いします。

const _stepData = (typeof stepData === 'string') ? [stepData] : stepData; 

、配列として、それを反復:

+0

を、それはあなたが望むものを非常に明確ではありません。 'stepData'の2つのタイプの間で定義を解除したいですか?もしそうなら、どうですか?この 'dataId'は何ですか?あなたがもっと欲しいものを説明してください。 –

+0

.lengthの問題は何ですか?それはまさにあなたが両方のタイプで欲しいものです。 – AlexG

+0

文字列とその文字列[]が配列Aの長さを見つけるときに 'stepData'が必要です – SakthiSureshAnand

答えて

1

は、同じように何かをします。より一貫性のある、より少ないバグ。

1

あなただ質問は非常に明確ではないが、その場合、私はその後、場合、あなたはstepDataの値がstringstring[]であるかどうかを知る方法を求めているという推測を取るよ:

if (typeof stepData === "string") { 
    // stepData is a string 
} else { 
    // stepData is a string[] 
} 

または

if (stepData instanceof Array) { 
    // stepData is a string[] 
} else { 
    // stepData is a string 
} 

あなたのstepDataないconst、その後を作ることができます質問に対するあなたのコメントから

1

:私はstepData.lengthを反復していますforインサイド

。そのstring一度だけ、私は繰り返す必要があるのであれば、そのstring[]場合、私は多くの時間が、私はその場合には

を繰り返すことを文字列配列の長さを見つける必要があり、あなたのコードはでstringstring[]を区別することができなければなりません実行時に確認してください。 2つを区別するための簡単なチェックはtypeof stepData === "string"であり、stringsの場合はtrueですが、string[]の場合はfalseです。

if (typeof stepData === "string") { 
    // here stepData is a string 
} else { 
    // here stepData is a string[] 
} 
1

あなたには、いくつかの変数が文字列または文字列であるかどうかを知りたい場合は、[]キーワードinstanceofを使用することができます

if(stepData instanceof Array<string>) { 
... 
} else { 
... 
} 

または

if(typeof stepData === "string") { 
... 
} else { 
... 
} 
+2

'string'(または' String')に 'instanceof'を使うことはできませんし、' 'オブジェクト' 'が'多くのことができます –

+0

あなたは正しいです! アドバイスをいただきありがとうございます! –

関連する問題