2017-11-09 13 views
0

TypeScript Webページから:「最も基本的なデータ型は、JavaScriptとTypeScriptがブール値を呼び出す単純な真偽値です。TypeScriptの基本型booleanとの動作が混乱しています

[OK]をこれまでのところは良い、それだけでJSやJavaにおける正常なブールのようだが、私はこれを行うとき: 演算子「==」をに適用することはできません。

var a = false; // boolean 
// alternative declaration 
// var a: boolean = false; 

// ... do whatever with "a" 

if (a == true) // or using === 
{ 
    console.log("true"); 
} 

を私はというエラーを取得します'false'と 'true'を入力します。

はここで何が起こっている:これは動作しますので、 一つの可能​​な解決策は、「」いずれかにキャストするのですか?

答えて

1

true/falseの値は、ブール値そのものであるため、==/===で比較する必要はありません。冗長化されます。

はこれだけif (a)またはif (!a)

typescriptですが、ちょうどあなたのコードをこのように最適化したいと考えています。バニラJSでif (a === true)

+0

この動作には使用されていませんでしたが、この動作には使用されていませんでした –

1

を行うにはまったく問題あり活字体も可能開発者のエラーについて警告しているためエラーメッセージが出https://github.com/Microsoft/TypeScript/issues/11178#issuecomment-249877718

This is working as intended. The compiler performs control flow analysis and knows that p has the actual value Place.Left where you're performing the === operations, and it is calling out that it makes no sense to compare a value that is known to be Place.Left to a value that is known to be Place.Right. It's effectively like writing Place.Left === Place.Right or 1 === 2, both of which would also produce errors.

を参照してください。 aに設定して偽(決して変更しないでください)と設定すると、a == trueをチェックするのは意味がありません。基本的に、TypeScriptsはデッドコードについて警告します。

+0

この例では、デッドコードについては正しいですが、ブール値が変更できる実際のコードでは同じ問題が発生しました –

+1

@BakedInhalf実際のコードでは、エラーを示す実際のコードで質問を投稿する必要があります。実際には値が違うかもしれないと思っているにもかかわらず、おそらくどこかに間違いがあります。または、キャストを使用して、変更をタイプスクリプトから隠すこともできます。 – Duncan

+0

@Duncan間違いなしです。 typescriptに== trueを書くことはできません。私は正しい答えをマークしました –

関連する問題