# 20230216_型を意識する ###### tags: `ブログ記事` - [x] 公開(ブログ公開担当者がいじるやつ) 太字斜体で書いてある内容を埋めて行ってください. 文章,画像は太字斜体の下の行に入れてください. 最初に書く時はREADMEを読んだら読むといいと思います. <br> ## 表示されない情報 ***書いた人の名前(自己紹介文と同じ名前)*** { 五十嵐和亜 } ***記事の簡単な説明(検索した時にタイトルの下に出てくる文章)*** { 静的型付け言語(TypeScript)に入門しました。 } <br> ## 表示される部分 ***サムネイル画像*** {  } ***カテゴリ*** 以下の中から該当しそうなカテゴリを選択してください ※一つだけ選択してください - [ ] 対外活動 - [x] 活動の様子 - [ ] メンバーの趣味 ***タグ*** 以下の中から該当しそうなカテゴリを選択してください.当てはまる物がない場合は適宜追加してください. 言語 - [ ] HTML - [ ] CSS - [ ] Python - [ ] Go - [ ] Ruby - [ ] JavaScript - [x] TypeScript - [ ] Dart - [ ] Rust - [ ] Kotlin - [ ] Swift フレームワーク・ライブラリ - [ ] Ruby on rails - [ ] Vue.js - [ ] Nuxt.js - [ ] React.js - [ ] Next.js - [ ] Gin - [ ] Flluter ツール - [ ] GitHub - [ ] ターミナル - [ ] WSL - [ ] Ubuntu - [ ] Docker - [ ] Raspberry Pi - [ ] Figma 分野 - [ ] Web-design --- ***以下に本文を記載してください*** 初めまして、NUTMEGの五十嵐です。 プログラミング2年目にして、はじめて触った静的型付けについてお話しします。 ## 動的型付けと静的型付け まず、プログラミング言語は大きく「動的型付け言語」と「静的型付け言語」の2つに分かれます。この違いは、変数や関数の引数、返り値に対して型が自動的に判定されるか自ら宣言するかにあります。 **動的型付け** - プログラムを実行時に型の変換が行われ型が決定される。 - インタプリタ言語とも言われる。 型宣言が必要ないためコードがシンプルで書きやすいです。 私が今までに触ってきたRuby, Python, JavaScriptがこれにあたります。 ~~~ javascript:example.js // JavaScript 型付けなし const add = (x, y) => { return x + y; }; console.log(add(1,2)); //3 ~~~ **静的型付け** - 型付けが実行前に行われる。 - コンパイラ言語とも言われる。 予め明示的に型を定義することで、その変数が扱うデータを制限できます。 プログラムの実行前に型検査(演算とデータの型が適合しているかを確かめる型の検査)が行われます。 私が触り始めたTypeScriptがこれにあたります。 ~~~ typescript:example.ts // TypeScript 引数、返り値、関数自体にそれぞれ型付け const add: (baseValue: number, increment: number) => number = ( x: number, y: number ): number => { return x + y; }; console.log(add(1,2)); //3 ~~~ ## 触ってみて **動的型付け** 動的型付けを触っている時は、型を意識することはほとんどありませんでした。エラーが出てから気にすることが多く仕方なく付けるイメージでした。(実行するまでエラーに気づかないし、分かりにくい) 暗黙的に型が変換されて、意図しない挙動が起きることもあります。 一方で、簡単で書きやすく言語ごとの理解は早かったと思います。 **静的型付け** 今まで意識していなかった分大変でした。その分動的型付けにはない利点を感じられました。 - 実行前にエラーに気づける - 代入される値に制限をかけエラーを未然に防ぐ ex) 整数値〇、負の数✖、小数点を扱う、数値の配列、特定の文字列のみ 変数に合わせて、厳密に型を制限できます。 - 関数の意図が作成者以外にも分かりやすい点もメリットです。 引数、戻り値、関数等に型宣言されていることで、利用イメージが容易になります。 ## 最後に 型を意識し直すのは大変ですが、コードの安全性や意図を共有できるのは大きなメリットに感じました。適材適所で使い分けられるようにマスターしていきたいです!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up