Javascript primitive types number and string are too general and do not express the domain objects. Because lack of type alias in Javascript, we can use flow
export type Centimeter = number export type Color = string export type ImageSource = number export type Kilogram = number export type Kilocalorie = number // 1 cal = 4.1840 J export type Second = number export type SecondsSince1970 = number export type Minute = number export type DateString = string // 2018-11-20 export type DateTimeString = string // 2018-11-20T00:00:00 export type YearWeekString = string // 201838
export type FunctionWithVoid = () =>void export type FunctionWithString = (string) =>void export type FunctionWithBoolean = (boolean) =>void export type FunctionWithNumber = (number) =>void export type JSONObject = any export type JSONString = string export type StringToString = any
export type Degree = number export type Radian = number