Medium 精选
medium 共 103 题,是真正的主战场。这里精选 8 道,覆盖全部六个套路。
TIP
medium 里 80% 的题都是六大套路的组合。做题前先判断属于哪一类。
Medium2 · Get Return Type查看答案
实现 MyReturnType<T>,不用内置的 ReturnType。
ts
type A = MyReturnType<() => string> // stringMedium3 · 实现 Omit查看答案
实现 MyOmit<T, K>,剔除指定的键。
ts
interface Todo {
title: string
description: string
completed: boolean
}
type A = MyOmit<Todo, 'description' | 'completed'>
// { title: string }Medium9 · Deep Readonly查看答案
递归地把所有属性(含嵌套)变成只读。
ts
type A = DeepReadonly<{ a: { b: string } }>
// { readonly a: { readonly b: string } }Medium10 · Tuple to Union查看答案
把元组转成元素类型的联合。
ts
type A = TupleToUnion<[string, number]> // string | numberMedium119 · ReplaceAll查看答案
实现 ReplaceAll<S, From, To>,替换字符串里所有匹配。
ts
type A = ReplaceAll<'a-b-c', '-', '/'> // 'a/b/c'Medium实现 UnionToIntersection查看答案
把联合类型转成交叉类型。
ts
type A = UnionToIntersection<{ a: 1 } | { b: 2 }>
// { a: 1 } & { b: 2 }Medium实现 Getters(键重映射)查看答案
把对象的每个属性转成对应的 getter 方法。
ts
type A = Getters<{ name: string; age: number }>
// { getName: () => string; getAge: () => number }Medium实现 TrimLeft查看答案
去掉字符串左侧的空白字符(空格、换行、制表符)。
ts
type A = TrimLeft<' \n\t hello'> // 'hello'