1 Star 0 Fork 0

Sunny / type-challenges

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.ja.md 2.67 KB
一键复制 编辑 原始数据 按行查看 历史
antfu 提交于 2022-07-02 00:04 . chore: update index

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 回渡されることはありません。


戻る 解答を共有 解答を確認
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ztes/type-challenges.git
git@gitee.com:ztes/type-challenges.git
ztes
type-challenges
type-challenges
main

搜索帮助

344bd9b3 5694891 D2dac590 5694891