開発環境
- macOS Mojave - Apple (OS)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- TypeScript (プログラミング言語)
- Node.js(JavaScriptの実行環境)
Programming TypeScript: Making Your JavaScript Applications Scale (Boris Cherny(著)、O'Reilly Media)のChapter 4(Functions)、Exercises(82)3の解答を求めてみる。
コード
TypeScript
console.log("3. overload")
type Reservation = {}
type Reserve = {
(from: Date, to:Date, destination: string) : Reservation
(from: Date, destination:string): Reservation
(destination:string): Reservation
}
let reserve: Reserve = (
fromOrToOrDestination: Date | string,
toOrDestination?: Date | string,
destination?: string
) => {
if (toOrDestination instanceof Date &&
toOrDestination instanceof Date) {
return {
from: fromOrToOrDestination,
to:toOrDestination,
destination: destination
}
}
if (fromOrToOrDestination instanceof Date) {
return {
from: fromOrToOrDestination,
destination: toOrDestination
}
}
return {
destination: fromOrToOrDestination
}
}
let from = new Date(Date.UTC(2000, 0, 1))
let to = new Date(Date.UTC(2000, 0, 2))
let reserve1 = reserve(from, to, "Japan")
let reserve2 = reserve(from, "Japan")
let reserve3 = reserve("Japan")
let reserves = [reserve1, reserve2, reserve3]
reserves.forEach(reserve => console.log(reserve))
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)
$ ts-node sample3.ts
3. overload
{ from: 2000-01-01T00:00:00.000Z,
to: 2000-01-02T00:00:00.000Z,
destination: 'Japan' }
{ from: 2000-01-01T00:00:00.000Z, destination: 'Japan' }
{ destination: 'Japan' }
$
0 コメント:
コメントを投稿