摘要: 题目 中文 实现二叉树的中序遍历 示例: const tree1 = { val: 1, left: null, right: { val: 2, left: { val: 3, left: null, right: null, }, right: null, }, } as const; type 阅读全文
posted @ 2022-09-29 21:53 Laggage 阅读(38) 评论(0) 推荐(0)
摘要: 题目 中文 Block,Element,Modifier 方法(BEM)是 CSS 中类的流行命名约定。 例如,块组件用 btn 表示,依赖于块的元素用 btn__price 表示,更改块样式的修饰符将用 btn--big 或者 btn__price--warning表示。 实现从这三个参数生成字符 阅读全文
posted @ 2022-09-25 21:32 Laggage 阅读(77) 评论(0) 推荐(0)
摘要: 题目 中文 递归将数组展开到指定的深度 示例: type a = FlattenDepth<[1, 2, [3, 4], [[[5]]]], 2>; // [1, 2, 3, 4, [5]]. flattern 2 times type b = FlattenDepth<[1, 2, [3, 4], 阅读全文
posted @ 2022-09-24 21:38 Laggage 阅读(60) 评论(0) 推荐(0)
摘要: 题目 中文 实现 lodash 中_.flip方法的类型版本 FlipArguments<T>类型接收泛型参数 T 并返回一个函数类型, 且此函数类型有和 T 相同的返回类型但其参数的顺序是倒过来的 English Implement the type version of lodash's _.f 阅读全文
posted @ 2022-09-24 20:05 Laggage 阅读(36) 评论(0) 推荐(0)
摘要: 题目 中文 实现类型版本的数组反转 Array.reverse 例如: type a = Reverse<['a', 'b']>; // ['b', 'a'] type b = Reverse<['a', 'b', 'c']>; // ['c', 'b', 'a'] English Implemen 阅读全文
posted @ 2022-09-23 00:38 Laggage 阅读(67) 评论(0) 推荐(0)
摘要: 题目 中文 给定一个只包含字符串类型的元组类型T和一个类型 U, 递归地构建一个对象. English Given a tuple type T that only contains string type, and a type U, build an object recursively. ty 阅读全文
posted @ 2022-09-22 21:31 Laggage 阅读(46) 评论(0) 推荐(0)
摘要: 题目 中文 实现 Object.entries 的类型版本 示例: interface Model { name: string; age: number; locations: string[] | null; } type modelEntries = ObjectEntries<Model>; 阅读全文
posted @ 2022-09-22 21:12 Laggage 阅读(117) 评论(0) 推荐(0)
摘要: 题目 中文 从T中选出一组无法分配给U的属性 示例: type OmitBoolean = OmitByType< { name: string; count: number; isReadonly: boolean; isEnable: boolean; }, boolean >; // { na 阅读全文
posted @ 2022-09-22 20:45 Laggage 阅读(43) 评论(0) 推荐(0)
摘要: 题目 中文 实现一个通用的类型 Mutable<T>,使类型 T 的全部属性可变(非只读)。 例如: interface Todo { readonly title: string; readonly description: string; readonly completed: boolean; 阅读全文
posted @ 2022-09-22 02:24 Laggage 阅读(112) 评论(0) 推荐(0)
摘要: 题目 中文 实现一个通用的RequiredByKeys<T, K>,它接收两个类型参数T和K。 K指定应设为必选的T的属性集。当没有提供K时,它就和普通的Required<T>一样使所有的属性成为必选的。 例如: interface User { name?: string; age?: numbe 阅读全文
posted @ 2022-09-21 19:52 Laggage 阅读(69) 评论(0) 推荐(0)
摘要: 题目 中文 实现一个通用的PartialByKeys<T, K>,它接收两个类型参数T和K。 K指定应设置为可选的T的属性集。当没有提供K时,它就和普通的Partial<T>一样使所有属性都是可选的。 例如: interface User { name: string; age: number; a 阅读全文
posted @ 2022-09-21 19:30 Laggage 阅读(89) 评论(0) 推荐(0)
摘要: 题目 中文 实现EndsWith<T, U>,接收两个 string 类型参数,然后判断T是否以U结尾,根据结果返回true或false 例如: type a = EndsWith<'abc', 'bc'>; // expected to be false type b = EndsWith<'ab 阅读全文
posted @ 2022-09-21 00:57 Laggage 阅读(106) 评论(0) 推荐(0)
摘要: 题目 中文 实现StartsWith<T, U>,接收两个 string 类型参数,然后判断T是否以U开头,根据结果返回true或false 例如: type a = StartsWith<'abc', 'ac'>; // expected to be false type b = StartsWi 阅读全文
posted @ 2022-09-21 00:52 Laggage 阅读(220) 评论(0) 推荐(0)
摘要: 题目 中文 找出T中类型为U的属性 示例: type OnlyBoolean = PickByType< { name: string; count: number; isReadonly: boolean; isEnable: boolean; }, boolean >; // { isReado 阅读全文
posted @ 2022-09-21 00:44 Laggage 阅读(51) 评论(0) 推荐(0)
摘要: 题目 中文 实现 RemoveIndexSignature<T>, 将索引字段从对象中排除掉. 示例: type Foo = { [key: string]: any; foo(): void; }; type A = RemoveIndexSignature<Foo>; // expected { 阅读全文
posted @ 2022-09-21 00:41 Laggage 阅读(139) 评论(0) 推荐(0)
摘要: 题目 中文 给定一个正整数作为类型的参数,要求返回的类型是该数字减 1。 例如: type Zero = MinusOne<1>; // 0 type FiftyFour = MinusOne<55>; // 54 English Given a number (always positive) a 阅读全文
posted @ 2022-09-20 21:08 Laggage 阅读(131) 评论(0) 推荐(0)
摘要: 题目 中文 从字符串中剔除指定字符。 例如: type Butterfly = DropChar<' b u t t e r f l y ! ', ' '>; // 'butterfly!' English Drop a specified char from a string. For examp 阅读全文
posted @ 2022-09-19 01:00 Laggage 阅读(42) 评论(0) 推荐(0)
摘要: 题目 中文 实现类型 PercentageParser。根据规则 /^(\+|\-)?(\d*)?(\%)?$/ 匹配类型 T。 匹配的结果由三部分组成,分别是:[正负号, 数字, 单位],如果没有匹配,则默认是空字符串。 例如: type PString1 = ''; type PString2 阅读全文
posted @ 2022-09-19 00:55 Laggage 阅读(48) 评论(0) 推荐(0)
摘要: 题目 中文 实现一个ReplaceKeys类型, 这个类型可以替换联合类型中指定属性的类型, 如果联合类型中的某个类型没有这个属性, 那就跳过; ReplaceKeys接受 3 个泛型参数. 例如: type NodeA = { type: 'A'; name: string; flag: numb 阅读全文
posted @ 2022-09-18 19:16 Laggage 阅读(98) 评论(0) 推荐(0)
摘要: 题目 中文 实现一个 IsUnion类型, 接受输入类型 T, 并返回 T 是否为联合类型. type case1 = IsUnion<string>; // false type case2 = IsUnion<string | number>; // true type case3 = IsUn 阅读全文
posted @ 2022-09-09 00:21 Laggage 阅读(123) 评论(0) 推荐(0)
摘要: 题目 中文 实现一个以 T 作为泛型参数的 IsNever类型. 如果 T 是never, 返回 true, 否则返回 false. 示例: type A = IsNever<never>; // expected to be true type B = IsNever<undefined>; // 阅读全文
posted @ 2022-09-08 23:23 Laggage 阅读(137) 评论(0) 推荐(0)
摘要: 题目 中文 在类型系统中实现类似于 Python 中 any 函数。类型接收一个数组,如果数组中任一个元素为真,则返回 true,否则返回 false。如果数组为空,返回 false。 例如: type Sample1 = AnyOf<[1, '', false, [], {}]>; // expe 阅读全文
posted @ 2022-09-08 22:01 Laggage 阅读(81) 评论(0) 推荐(0)
摘要: 题目 中文 获取两个接口类型中的差值属性。 type Foo = { a: string; b: number; }; type Bar = { a: string; c: boolean; }; type Result1 = Diff<Foo, Bar>; // { b: number, c: b 阅读全文
posted @ 2022-09-08 21:09 Laggage 阅读(75) 评论(0) 推荐(0)
摘要: 题目 中文 将 camelCase 或 PascalCase 的字符串转换为 kebab-case 的风格 示例: type FooBarBaz = KebabCase<'FooBarBaz'>; const foobarbaz: FooBarBaz = 'foo-bar-baz'; type Do 阅读全文
posted @ 2022-09-08 00:31 Laggage 阅读(117) 评论(0) 推荐(0)
摘要: 题目 中文 实现一个将接收到的 String 参数转换为一个字母 Union 的类型。 例如 type Test = '123'; type Result = StringToUnion<Test>; // expected to be "1" | "2" | "3" English Impleme 阅读全文
posted @ 2022-09-07 20:52 Laggage 阅读(63) 评论(0) 推荐(0)