仕事ですぐに使えるTypeScript その4
目的
学習の記録と学びになった部分をアウトプットするため。
期限
対象書籍の読了・内容理解が8月中に完了していること。
対象
今回の対象は「プリミティブ」。
著作権者:フューチャー株式会社(Future Corporation)様
変数
三行サマリ
リテラルとは
リテラルとは、それ以上分解できないシンプルなデータのこと。
booleanリテラル
- true/falseの2つの真偽値をとるデータ型。
- JavaScriptでは、Null、空文字、ゼロ、undefiend、NaNを変換するとfalseとなる。
ドモルガンの法則
if文が複雑なときにそれを簡単にするための法則。下記のような法則でNOTとANDとORの組み合わせを変換することができる。 特に下記の例では右側の式を左側に変換することがコードの可読性を高めることができる。 NOTの集合演算は基本的に普段の生活ではあまり出てこないので、集合のAND ORを考えてから逆転させる方が簡単にイメージすることができる。
!(P || Q) == !P && !Q !(P&&Q) == !P || !Q
数値型
- JavaScriptでは64bitの浮動小数点数で扱っており、これはどのCPUをしようしていても基本的に同じ制度をもつ。
- JavaScriptの正確な数値の上限は
Number.MAX_SAFE_INTEGER
、下限はNumber.MIN_SAFE_INTEGER
で調べることができる。 また、この数値が範囲内に収まっているかを確認したいときは、
Number.isSafeInteger(値)
という関数で調べることができる。TypeScriptには
number
とbigint
という二種類の数値型がある。- numberは浮動小数点を扱えるという点で、多くのケースでベストな選択肢になる。
bitintは整数のみしか扱えないものの、桁数の上限はない。しかしながら、
"target: esnext"
でしか扱うことpはできない。また、number型は2進数で表した数値表現のため、0.1 + 0.2等、二進数で表現できない場合は数値に誤差ができてしまう。そのため、decimal.js等の外部ライブラリをしようして計算を行わなければならない。
const a = 0.1; const b = 0.2; console.log(a + b); // 0.30000000000000004
- 引数の中で最大値を求める
- Math.max(x, y, z...)
- Math.max(...array)
- 引数の中で最小値を求める
- Math.min(x, y, z...)
- Math.min(...array)
- 0以上1未満の擬似乱数を返す
- Math.random()
Mathオブジェクトのメソッドは下記を参考にする。 future-architect.github.io
stringリテラル
- JavaScirptの文字コードはJavaと同様のUTF-16。絵文字など一部の文字列で1文字で表現しきれず二文字を使って1文字を表現する物をサロゲートペアと呼ぶ。
- 範囲指定を行う場合は、絵文字の一部のみを拾ってしまう可能性があるので、絵文字も含めてテストをすることが大切。
文字コードの正規化
全角のアルファベットのAと半角のAはコードポイントが異なる。normalizeを使用することで、それを正規化することができる。 正規化する(フロント側でよし何やってあげる)ことで、ユーザーに全角を使って入力してもらうことを指定したり、そういったかっこ悪いUIをなくすことができる。
> "ABCアイウエオ㍻".normalize("NFKC") 'ABCアイウエオ平成'
undefinedとnull
- TYpeScriptは補完がきくという風によく言われているが、本質的にはundefinedに遭遇するとわかっているコードを事前にチェックしてくれているということ。
- TypeScriptでは関数の引数の数が呼び出しごとに異なる場合は、クエスチョンマークをつけることで、省略可能となる。
function hoge(a: string, b?: int) { console.log(`a: ${a}, b: ${b || 'empty'}`) }