day.js のtypesファイルのコードを読んで型定義を学んでみる(その1)

こんにちは!kossyです!




さて、今回はTypeScriptの実践的な使い方を学ぶ目的で、
javascriptの日付を扱うライブラリでmoment.jsに次いで有名なday.jsのtypesファイルを読んで、
型定義について学んでみたいと思います。


declare(アンビエント宣言)

5行目から11行目にかけて、declareというメソッドが使われています。
これは、アンビエント宣言と呼ばれていて、JavaScriptのライブラリをTypeScriptで使うときに必要になります。


Union型 (Union Types)

12行目に以下の記述がありました。

export type ConfigType = string | number | Date | Dayjs

「ConfigTypeという型は、string・number・Date・Dayjs を合併(Union)した型で、外部から参照できる」

という宣言になってますね。

上記のように、文字列か数値かDate型かDayjs型である型を定義したい、のように、
型の和集合を表現したいときに使います。

string型とUnion型の併用

16行目を見てください。

type UnitTypeShort = 'd' | 'M' | 'y' | 'h' | 'm' | 's' | 'ms'

「UnitTypeShortは、文字列d・M・y・h・m・s・msのいずれかである」

というtype宣言になっています。

string型とUnion型を併用すると、定数のように扱うことができ、VSCodeであれば入力補完を得られます。

f:id:kossy-web-engineer:20200829204903p:plain

TypeScriptにはenum(列挙型)の機能もありますが、こちらよりもstring型とUnion型の併用を使って
列挙を表現するケースの方が多いみたいです。



勉強になりました。