【番外編】ライトノベルで学ぶTypeScript超入門(小説家になろう版)~constアサーションの巻~
AV部の今年のクリスマス会の出し物は、なんとTypeScriptクイズ大会!
ネタを考えるメンバーに、部長である真琴はある提案をする。
12月の寒い日。
わがAV部でも部室にクリスマスの飾り付けを行い、一段落した。
そして真琴が考案した、近所の子供達へのプログラミング教育も兼ねた、クリスマスTypeScriptクイズ大会という出し物のネタづくりをメンバーと行っている。
「constアサーションの話もクイズのネタに入れるといいわね」
「なんだそれ、コンスとアサーション?」
「constアサーションは、変数や定数が再代入されないことをコンパイラに教えるって機能よ」
「それだったら、const aaa = "あああ"; みたいにしたら済むんじゃないか」
「そうね。でもそれがオブジェクトのプロパティだったら?例えばこんな例文……」
const item = {
name: "Xmas",
message: "メリークリスマス!",
};
item.message="メリークリトリス!";
console.log('name:',item.name);
console.log('name:',item.message);
「『メリークリスマス!』とmessageに入っているのに、『メリークリトリス』がメッセージに入ってしまってるな。っていうか、何だよメリークリトリスって……」
「ここで『メリークリトリス』の代入を阻止するには?って話なのよ」
真琴は俺のツッコミを無視して続ける。
「as constってのを付けることで、その阻止ができるわ」
const item = {
name: "Xmas",
message: "メリークリスマス!",
} as const;
item.message="メリークリトリス!";
console.log('name:',item.name);
console.log('name:',item.message);
これをコンパイルすると、こんなメッセージが出た。
cons.ts:7:6 - error TS2540: Cannot assign to 'message' because it is a read-only property.
7 item.message="メリークリトリス!";
~~~~~~~
Found 1 error in cons.ts:7
「messageがread-onlyだから、再代入ができないと言っているわ」
「なるほど、予期しない再代入を防ぐってことか。これもクイズネタに使えそうだな」
というわけで、AV部のクリスマスの出し物も上手くいくはず。
っていうか、子供達へのプログラミング教育でこんな例文いいのか?
まあよい、と思いながら俺は飲みかけのレッドブルを口に含んだ。
今回はTypeScriptの「constアサーション」についてのお話を紹介しました。
楽しんでいただければ幸いです。
それでは、良いお年を!