2017-11-16 42 views
-1

変数値が未定義のときに設定しようとしていますが、バニラのjavascriptのアプローチを使用しようとするとエラーが発生します。typescriptで未定義の変数を設定する方法は?

ブロックスコープ変数 'x'は宣言の前に使用されます。

未定義変数を設定するためにtypescriptを使用する場合の最良の方法は何ですか?それはブロックスコープ変数であるため、

let x = (typeof x === 'undefined') ? def_val : x; 
+0

'let'はブロックスコープの変数なので、' x'はその時点で_definitely_ undefinedです。 'x'が親ブロックにも定義される場合、' var'を使う必要があります。 –

答えて

1

活字体は、xが確実に定義されていないことを伝えることができますし、ブロック全体を見ることができます。

あなたがコンパイラよりもよく知っている場合は、あなたが行分離することができます:

const def_val = 'default'; 

let x: string; 
x = (typeof x === 'undefined') ? def_val : x; 

をしかし、あなたはおそらくあなたのケースで未定義することができる方法のブロックは、変数をスコープを検討する必要があります(おそらく、あなたのコードは非常にではありませんあなたの質問の例のように)。

一般的な使用例は、より多くのようになります:

const def_val = 'default'; 

function work(y: string) { 
    let x = (typeof y === 'undefined') ? def_val : y; 
} 

ます。また、それは可能性が低い値は、多くの場合、不定となります作るために、より厳格なコンパイラオプションを追加することができます。

速記

有用である可能性が速記のfalsey-合体もあります:

const def_val = 'default'; 

function work(y: string) { 
    let x = y || def_val; 
} 

これはデフォルトでundefinednull、または''に置き換えられます。

関連する問題