From c24432375ee86efc1f39530f5788f312663586d2 Mon Sep 17 00:00:00 2001 From: nakaty <78027524+nakaty2023@users.noreply.github.com> Date: Sat, 30 Nov 2024 11:15:34 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E5=80=A4=E3=83=BB=E5=9E=8B=E3=83=BB?= =?UTF-8?q?=E5=A4=89=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- note.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 note.md diff --git a/note.md b/note.md new file mode 100644 index 0000000..d402e79 --- /dev/null +++ b/note.md @@ -0,0 +1,17 @@ +# 重要だと感じたこと +## 値・型・変数 +* readonlyはそのオブジェクトが入れ子になっている場合、その中のオブジェクトのプロパティまでをreadonlyにしない +* const assertionはすべてのプロパティを固定する +* pushメソッドやpopメソッドは配列に対して破壊的操作をする +* コンパイルエラーを無視しないようにする(エラーになった箇所は自動修正されない) +* 静的型付けではコンパイルのタイミングで型が決まる。動的型付けでは実行時に型が決まる +* プリミティブからオブジェクトへの変換をボックス化(boxing)と言う。 +* JavaScriptでは、自動ボックス化により、プリミティブ型の値でもフィールドを参照できたり、メソッドが呼び出せる。 +* JavaScriptが内部的にプリミティブ型の値をオブジェクトに暗黙変換しているのを自動ボックス化(auto-boxing)という。 +* JavaScriptの自動ボックス化で変換先となるオブジェクトをラッパーオブジェクト(wrapper object)と呼ぶ。 +* プリミティブ型の代わりに、ラッパーオブジェクト型を型注釈に使う利点はない。型注釈にはプリミティブ型を使うべき。 +* JavaScriptには、整数と小数を型レベルで区別するものはない。どちらもnumber型で表現する。 +* NaNは特殊で、等号比較では常にfalseになる +* JavaScriptの小数の計算には誤差が生じる場合がある。 +* undefinedとnullの使い分けについて、基本的にはundefinedに寄せる。 +* リテラル型はマジックナンバーやステートの表現に用いられる。 From 75cebec66e7e1f2026356c8b8436acd17f6eb700 Mon Sep 17 00:00:00 2001 From: nakaty <78027524+nakaty2023@users.noreply.github.com> Date: Sat, 30 Nov 2024 16:20:40 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E3=82=AA=E3=83=96=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=82=AF=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- note.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/note.md b/note.md index d402e79..0563355 100644 --- a/note.md +++ b/note.md @@ -15,3 +15,7 @@ * JavaScriptの小数の計算には誤差が生じる場合がある。 * undefinedとnullの使い分けについて、基本的にはundefinedに寄せる。 * リテラル型はマジックナンバーやステートの表現に用いられる。 +### オブジェクト +* オプションプロパティ(Optional Properties)とは、オブジェクトの中で必ずしも存在しなくても良いプロパティのこと +* JavaScriptのオプショナルチェーンはnullやundefinedのプロパティを誤って参照しないようにしつつ、記述量を抑えられる書き方。(Rubyのぼっち演算子的なイメージで理解した。) +* オブジェクトのループについて、for-inで反復処理を書く場合は、hasOwnPropertyでプロパティがプロトタイプのものでないことをチェックしたほうが安全。 From 8dce2d6a6dce46c250eaade7ddb48a56a53703e3 Mon Sep 17 00:00:00 2001 From: nakaty <78027524+nakaty2023@users.noreply.github.com> Date: Sat, 30 Nov 2024 18:57:47 +0900 Subject: [PATCH 3/3] =?UTF-8?q?TypeScript=E3=81=A8=E6=A7=8B=E9=80=A0?= =?UTF-8?q?=E7=9A=84=E5=9E=8B=E4=BB=98=E3=81=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- note.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/note.md b/note.md index 0563355..779311f 100644 --- a/note.md +++ b/note.md @@ -19,3 +19,6 @@ * オプションプロパティ(Optional Properties)とは、オブジェクトの中で必ずしも存在しなくても良いプロパティのこと * JavaScriptのオプショナルチェーンはnullやundefinedのプロパティを誤って参照しないようにしつつ、記述量を抑えられる書き方。(Rubyのぼっち演算子的なイメージで理解した。) * オブジェクトのループについて、for-inで反復処理を書く場合は、hasOwnPropertyでプロパティがプロトタイプのものでないことをチェックしたほうが安全。 +### TypeScriptと構造的型付け +* TypeScriptは構造的型付けを型システムとして採用している。 +* ダックタイピングは、オブジェクトの型よりもオブジェクトの持つメソッドやプロパティが何であるかによってオブジェクトを判断するプログラミングスタイル。構造的型付けは、ダックタイピングに適した型システム。