書籍にて、TypeScriptの基本文法の学習しております。
列挙型(enum)についてのサンプルプログラムを書いてコンパイルしたところエラーになってしまったのでその理由が知りたいです。
以下がサンプルプログラムと、エラーコードです。
TypeScript
1enum Season{ 2 spring, 3 summer, 4 autamn, 5 winter 6}; 7 8let s:Season = Season.summer; 9 10switch(s){ 11 case Season.spring: 12 document.write('<h1>Spring</h1>'); 13 break; 14 15 case Season.summer: 16 document.write('<h1>Summer</h1>'); 17 break; 18 19 case Season.autamn: 20 document.write('<h1>Autamn</h1>'); 21 break; 22 23 case Season.winter: 24 document.write('<h1>Winter</h1>'); 25 break; 26 27} 28 29document.write('<p>今の季節を表示しています。</p>')
hello.ts(11,8): error TS2678: Type 'Season.spring' is not comparable to type 'Season.summer'. hello.ts(19,8): error TS2678: Type 'Season.autamn' is not comparable to type 'Season.summer'. hello.ts(23,8): error TS2678: Type 'Season.winter' is not comparable to type 'Season.summer'.
書籍では、Seasonはs:Seasonというようにひとつの型として扱えると記述されていましたが、間違いなのでしょうか?
ちなみに上記のソースコードの変数sの型をnumber型に書き換えるとコンパイルは通りました。しかし、そうすると変数sに適切なエイリアスを設定できていないため、TypeScriptの長所が消えてしまっている気がします。
Season型どうしの値を比較しているのに、上記のコンパイルエラーになってしまう原因をご教授頂けたら幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/03 18:17
2017/08/03 18:43
2017/08/03 18:52