Skip to content

Instantly share code, notes, and snippets.

@acevif
Last active December 21, 2022 03:33
Show Gist options
  • Save acevif/acdb6ae54e214bfb3fa9da67608d603e to your computer and use it in GitHub Desktop.
Save acevif/acdb6ae54e214bfb3fa9da67608d603e to your computer and use it in GitHub Desktop.
TypeScript/JavaScript memo

TypeScript/JavaScript メモ

編集方針

  • 主にTypeScript/JavaScriptの特徴・罠・クセについて書いていくメモです。
  • 自分を含めプログラミング経験は十分だがTS/JSはよく知らないという人の役には立ったらいいなと思って買いてます。

TypeScript/JavaScriptの特徴

  • 配列がcovariant(デフォルトの場合)かつ参照型である不健全性。具体的には書き込み後に実行エラーが起きるリスク https://typescriptbook.jp/reference/values-types-variables/array/array-type-is-covariant
  • top typeが2つある。anyunknown
  • 正規表現の.は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が参照カウンティングだったので循環参照に注意する必要があったようだ。今は罠ではない様子
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment