130. LazyMan() を作る

少し工夫が必要  - accepted / - tried

LazyManは食べることと寝ることしかやらないので、lazyです。

LazyMan(name: string, logFn: (log: string) => void) では渡されるlogFnを利用して、メッセージをログする。

LazyMan('Jack', console.log)
// Hi, I'm Jack.

eat(food: string)はできる。

LazyMan('Jack', console.log)
  .eat('banana')
  .eat('apple')
// Hi, I'm Jack.
// Eat banana.
// Eat Apple.

sleep(time: number)もできる、秒単位。

LazyMan('Jack', console.log)
  .eat('banana')
  .sleep(10)
  .eat('apple')
  .sleep(1)
// Hi, I'm Jack.
// Eat banana.
// (after 10 seconds)
// Wake up after 10 seconds.
// Eat Apple.
// (after 1 second)
// Wake up after 1 second.

sleepFirst(time: number)では順序問わず、一番高い優先順位でsleepする。

LazyMan('Jack', console.log)
  .eat('banana')
  .sleepFirst(10)
  .eat('apple')
  .sleep(1)
// (after 10 seconds)
// Wake up after 10 seconds.
// Hi, I'm Jack.
// Eat banana
// Eat apple
// (after 1 second)
// Wake up after 1 second.

こういうlazyなLazyMan()を作ってください。

バッグフリーで普通なコードは何より。

(2)
(97)