TypeScriptが以下の挙動をする理由を教えてください。
TypeScriptのバージョンは2.2.1、Visual Studio Codeを使用しています。

var hoge:boolean = true;
var fuga = hoge==false ? 123 : 456;  

このコードだとhoge==falseの部分がエラー

error TS2365: Operator '==' cannot be applied to types 'true' and
'false'.

になりますが、

var hoge:boolean;
hoge = true;
var fuga = hoge==false ? 123 : 456;  

このコードのように変数の宣言と代入を別のところで行うとhoge==falseの部分がエラーに
なりません。
この違いはどうして起こるのでしょうか?