Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 2.53 KB

File metadata and controls

32 lines (23 loc) · 2.53 KB

Chainable Options 中級 #application

by Anthony Fu @antfu

挑戦する    English 简体中文

JavaScript では、チェイン可能なオプションがよく使われます。しかし、TypeScript に切り替えたとき、正しく型を付けることができますか?

この課題では、オブジェクトでもクラスでも何でもいいので、 option(key, value)get() の 2 つの関数を提供する型を定義してください。option では、与えられたキーと値を使って現在の config の型を拡張できます。最終的な結果は get で取得することにしましょう。

例えば

declare const config: Chainable

const result = config
  .option('foo', 123)
  .option('name', 'type-challenges')
  .option('bar', { value: 'Hello World' })
  .get()

// expect the type of result to be:
interface Result {
  foo: number
  name: string
  bar: {
    value: string
  }
}

この問題を解くために js/ts のロジックを書く必要はありません。型レベルのロジックだけを書いてください。

keystring のみを受け付け、value は任意の型を受け付けると仮定しても構いません。同じ key が 2 回渡されることはありません。


戻る 解答を共有 解答を確認