演算子 '==' は活字体2のタイプのXおよびYには適用できない
活字体バージョン: 2.0.2.0
コード Iコードが少し愚かである知っています、実際に私のコードで(表現の訪問者を作る)これらの種類のテストをしていると私は本当にこれらがすぐに飛んでコンパイルする必要があると思う。
var a: boolean = (true == false);
var b: boolean = (5 == 2);
は、その代わりに等しいそのオペランドがタイプ「真」、「偽」、「5」と「2」に適用することはできません文句を言います。マークは、彼らがブール値または数値ではないことを、彼らは実際には、「真」「偽」、「5」、「2」のタイプです。私はタイプ「文字列」と「ブール」を比較することはできないことを知って、ちょっと、5は実際には数は、「5」と入力されていないか、私は間違っていますでしょうか?
しかしこれはコンパイルされます。
let x = 2;
var a: boolean = 5 == x;
var b: boolean = <number>5 == <number>2;
私は何かが見つからないのですが、なぜ5と2が「番号」のタイプと考えられないのですか?
期待される動作: は
実際の行動をコンパイルする必要があります:「オペランド 『==を言って、コンパイルエラーで 結果は<最初の引数>「と」<第二引数』タイプに適用することはできません」 > '
背景私はこの問題をtypescriptで説明しましたが、これはこのようにする必要があると定義していますが、どうしたらよいでしょうか? https://github.com/Microsoft/TypeScript/issues/6167
私はxがタイプ5でなければならないと言いますが、私が5を単独で使用しているときは、それが「数字」タイプであると思いました。 – Lostfields
@Lostfieldsあなたは 'let x = 5'は' let x = 5 as number; 'を意味すると思いますが、 'let x = 5 as 5'を意味します。どの時点であなたは基本的にtypescriptを無効にしています: 'let x = 5 as any' – JLarky