Code Monkey home page Code Monkey logo

type-challenge's Introduction

关于本文档

欢迎来到《TS 类型挑战通关手册》!这是一份对 type-challenges 题目的详细解答,旨在帮助你深入理解 TypeScript 类型系统,提高你的 TypeScript 编程能力。

为什么要做 ts 体操

作为 TypeScript 开发者,我们经常需要处理复杂的类型推导和类型约束问题。

type-challenges 是一个非常好的学习工具,它提供了一系列的 TypeScript 类型挑战题目,通过解答这些题目,我们可以锻炼自己的类型推导和类型约束能力,更好地掌握 TypeScript 的类型系统。

而在平时的学习 TS 的过程中,不知道有没有同学和我一样,看官方文档或者一些学习文档,总是觉得枯燥,或者看的时候觉得都会了,但是写的时候,这类型校验通不过,那里类型太复杂,全用 any,或者看一些库定义的类型,一些高级用法看的头疼。

总而言之,就是一看就会,一用就废。

那么这个时候,就需要通过 type-challenges 来帮助自己将 ts 高级知识点给融会贯通了。

就像上学的时候,融会贯通最简单的办法,就是做题。

主要内容

本题解包含了 type-challenges 的所有题目和详细解答。每个题目都包含了题目描述、题目分析、题解和知识点梳理。

题解一方面按照题目顺序进行组织,每个题目都有详细的解答和解题思路,包括使用的 TypeScript 类型特性和技巧。

同时对共性的常见复杂问题放在通用知识章节中进行阐述,比如 Equal 的判断,分发特性,类型推断的边界值等等的讨论。

学习姿势

建议按照题目顺序阅读题解,从简单到复杂逐步深入。不建议直接去看通用技巧章节,只需要在刷题过程遇到的时候查看即可。

在阅读题解时,强烈建议先尝试自己解答题目,然后再对照题解进行学习和思考。

建议通过 vscode 插件 Type Challenges 进行解答。同时查阅 TypeScript 官方文档,提高自己的 TypeScript 技能。

最终再翻看或者在没有思路的时候翻看本文档整理的题解,看看思路上有无出入,当然,思路往往不止一种,本文档也仅仅只代表我的理解,不一定最优,有更好的想法,或者文中有说的不对的地方,可以随时联系我

最后

希望这份《TypeScript 类型挑战题解》能对你学习 TypeScript 类型系统和解答 type-challenges 题目有所帮助。

如果有任何问题或建议,请随时 联系我,我将非常乐意与你交流和学习,也可拉你进群讨论,一起提 PR。

Contributors

type-challenge's People

Contributors

bingtsingw avatar wuxin0011 avatar yuzai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

type-challenge's Issues

[9384-Maximum] Maximum 类型判断错误

案例

// [4425-实现比较](/medium/4425-实现比较.md)
type GreaterThan<T extends number, U extends number, Arr extends any[] = []> =
  // 先达到 T,则 T 小
  T extends Arr['length']
  ? false
  : // 先达到 U
  U extends Arr['length']
  ? // 则 T 大
  true
  : // 都没到,膨胀元组
  GreaterThan<T, U, [...Arr, 1]>;

type Maximum<
  T extends any[],
  // 记录最大值,默认是 T[0] 或 never,处理 Maximum<[]> 的情况
  MAX extends number = T extends [] ? never : T[0],
> =
  // 遍历元组
  T extends [infer F extends number, ...infer R]
  ? // 如果当前元素大于 MAX
  GreaterThan<F, MAX> extends true
  ? // 更新 MAX
  Maximum<R, F>
  : // 否则沿用以前的 MAX
  Maximum<R, MAX>
  : // 遍历结束,返回 MAX
  MAX;


type t1 = Maximum<[1, 2, 34, 10, 11]> // ok 34
type t2 = Maximum<[-1,1]> // error 期望是 1
type t3 = Maximum<[-1,-2,-9]> // error 期望是-1

image

问题

只考虑到了正数情况,没有考虑到负数情况 题目链接

大佬有一些无法通过

比如4425实现比较,最后一个过不去
GreaterThan<1234567891011, 1234567891010>, true>
之前貌似还有一个,这种递归深度超过1000的都过不去

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.