- 主にTypeScript/JavaScriptの特徴・罠・クセについて書いていくメモです。
- 自分を含めプログラミング経験は十分だがTS/JSはよく知らないという人の役には立ったらいいなと思って買いてます。
- 配列がcovariant(デフォルトの場合)かつ参照型である不健全性。具体的には書き込み後に実行エラーが起きるリスク https://typescriptbook.jp/reference/values-types-variables/array/array-type-is-covariant
- top typeが2つある。
any
とunknown
- 正規表現の
.
は1コードポイントでも1書記素クラスタでもなく、 UTF-16の16bitコードユニット1つにマッチする。ES2015以降ならuフラグによって1コードポイントにマッチさせられる。通常は1書記素クラスタにマッチさせたいであろうから何らかのライブラリを使うことになりそう。 cf. https://blog.jxck.io/entries/2017-03-02/unicode-in-javascript.html - thisたいへんややこしい
- プロトタイプ型のオブジェクト指向。prototypeいじれてしまう。
- アロー関数と従来の関数は異なる. JavaScriptの場合のみ、アロー関数はコンストラクタにならない。 https://typescriptbook.jp/reference/functions/function-expression-vs-arrow-functions
- (基本的には)シングルスレッド。つまり非同期は(基本的に)parallelではないので油断するとスタックする。また実行順序がコードから予測可能である様子。そんなことを意識して並行プログラミングするとは変態的という気はするがどうもそういう文化があるっぽい
- closureと関数とarrow関数の絡みがようわからん
- Hoisting (巻き上げ) - https://developer.mozilla.org/ja/docs/Glossary/Hoisting
- デストラクタがない
- async await よくわからない Promise とのからみがとくに
- varのスコープ https://twitter.com/root_jp/status/1415298119537885194?s=21
- むかしはGCが参照カウンティングだったので循環参照に注意する必要があったようだ。今は罠ではない様子