前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【类型挑战】Trim Right,难度⭐️⭐️

【类型挑战】Trim Right,难度⭐️⭐️

作者头像
前端小鑫同学
发布2022-12-26 11:14:03
6480
发布2022-12-26 11:14:03
举报
文章被收录于专栏:小鑫同学编程历险记

Dear,大家好,我是“前端小鑫同学”,😇长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~

知识运用:

  1. 涉及到模板字符类型。
  2. 涉及到infer关键字使用。

题目分析:

题目地址:4803 - Trim Right

实现 TrimRight<T> ,它接收确定的字符串类型并返回一个新的字符串,其中新返回的字符串删除了原字符串结尾的空白字符串。

例如

代码语言:javascript
复制
type Trimed = TrimLeft<'  Hello World  '> // 应推导出 '  Hello World'

题目解答:

测试用例:
  1. 通过我们设计的类型工具将输入的类型处理为预期的类型。
  2. 分别需要处理空白字符、换行符、制表符三种。
代码语言:javascript
复制
/* _____________ 测试用例 _____________ */
import type { Equal, Expect } from '@type-challenges/utils'

type cases = [
  Expect<Equal<TrimRight<'str'>, 'str'>>,
  Expect<Equal<TrimRight<'str '>, 'str'>>,
  Expect<Equal<TrimRight<'str     '>, 'str'>>,
  Expect<Equal<TrimRight<'     str     '>, '     str'>>,
  Expect<Equal<TrimRight<'   foo bar  \n\t '>, '   foo bar'>>,
  Expect<Equal<TrimRight<''>, ''>>,
  Expect<Equal<TrimRight<'\n\t '>, ''>>,
]
复制代码
答案及解析:

我相信看过上一题的处理的伙伴已经知道这道题怎么做了,我们还是再来过一遍做题思路。

  1. 老套路,使用泛型来约定输入类型为String。
  2. 使用条件类型来判断S是否可以分配给包含测试用例提到的三种类型在模板字符串右边的类型。
  3. 如果依旧可分配还是使用TrimRight进行递归处理,指到无法分配后返回类型S,及完成了TrimRight的功能。
代码语言:javascript
复制
type TrimRight<S extends string> = S extends `${infer Rest}${" " | "\n" | "\t"}`
  ? TrimRight<Rest>
  : S;

接下来的一题是:【类型挑战】Trim,难度⭐️⭐️

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 知识运用:
  • 题目分析:
  • 题目解答:
    • 测试用例:
      • 答案及解析:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档