2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【TypeScript】カレー作りで理解するany型とunknown型の違い

Last updated at Posted at 2024-12-24

はじめに

TypeScriptのany型とunknown型は、どちらも「任意の値を受け入れる」という特性を持っていますが、それぞれ異なる使い方が求められます。今回は私の好物であるカレー作りを例にとって、両者の違いをわかりやすく解説します!

プログラミングは料理と同じ

料理をしたことがない人に、いきなり「フランス料理を作って」と言われても、それを実現するのはとても難しいでしょう。料理では、まず基本的な技術や知識を学ぶことが大切です。食材の切り方、調味料の使い方、火加減の調整など、一つひとつの要素を理解していくことで、徐々に複雑な料理にも挑戦できるようになります。

プログラミングも同じです。クラスや関数など、多くの概念を一度に理解するのは難しく感じるかもしれません。しかし、基本的な構文やロジック、ツールの使い方などを少しずつ学んでいくことで、次第に複雑なアプリケーションやシステムを構築できるようになります。

料理もプログラミングも、基礎を積み重ねることが成功の鍵です。一つひとつの要素を丁寧に学び、経験を積むことで、自分の手で創造的な成果を生み出せるようになるのです。焦らず、着実に取り組んでいきましょう!

any型

any型は、TypeScriptにおける「何でもあり」の型です。
この型を使うと、どんな値でも格納できるうえに、どんな操作も許容されます。しかし、自由すぎるため、予期せぬエラーやバグを引き起こす可能性があります。
言い換えれば、any型は「冷蔵庫にあるものをすべて使って何か作ってみよう」というスタイルです。結果として、カレーのつもりが謎の料理になってしまうかもしれません。

let ingredient: any;
ingredient = "じゃがいも";
ingredient = 42; // エラーにならない
console.log(ingredient.toUpperCase()); // 実行時エラーになる可能性

unknown型

一方、unknown型は「安全なany型」と呼ばれます。
どんな値でも代入できますが、具体的な操作を行う前に、その値の型を明示的にチェックする必要があります。これにより、不適切な操作を防ぐことができます。
つまり、unknown型は「この食材がカレーに使えるかどうか、まず確認してから調理しよう」というスタイルです。

let ingredient: unknown;
ingredient = "にんじん";
if (typeof ingredient === "string") {
  console.log(ingredient.toUpperCase()); // 型が確認されているので安全
}

カレーで例えると・・・

カレー作りにany型とunknown型を当てはめてみましょう。

any型のカレー作り

冷蔵庫にあるものを何でも放り込む。キムチやチョコレート、牛乳、果ては炭酸飲料まで入れることも許されます。結果として「カレー」と呼べないものが完成する可能性があります。

unknown型のカレー作り

冷蔵庫から取り出した食材をまず確認。「これは具材として適切か?」を一つ一つチェックし、合格したものだけを使います。安全でおいしいカレーが完成するでしょう。

まとめ

any型とunknown型の違いをカレー作りで例えると以下のようにまとめられます。

  • any型:自由すぎるが、結果が予測できない危険性がある。
  • unknown型:明示的な型チェックを求められるが、安全性が高い。

プログラムでもカレー作りでも、安全で確実な結果を求めるならunknown型を使いこなしましょう。TypeScriptの型を正しく理解し、思い通りのコードを書けるようになりましょう!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?