摘要: 题目 中文 实现 lodash 中_.flip方法的类型版本 FlipArguments<T>类型接收泛型参数 T 并返回一个函数类型, 且此函数类型有和 T 相同的返回类型但其参数的顺序是倒过来的 English Implement the type version of lodash's _.f 阅读全文
posted @ 2022-09-24 20:05 Laggage 阅读(22) 评论(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:39 Laggage 阅读(38) 评论(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 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 实现 Object.entries 的类型版本 示例: interface Model { name: string; age: number; locations: string[] | null; } type modelEntries = ObjectEntries<Model>; 阅读全文
posted @ 2022-09-22 21:13 Laggage 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 从T中选出一组无法分配给U的属性 示例: type OmitBoolean = OmitByType< { name: string; count: number; isReadonly: boolean; isEnable: boolean; }, boolean >; // { na 阅读全文
posted @ 2022-09-22 20:45 Laggage 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 实现一个通用的类型 Mutable<T>,使类型 T 的全部属性可变(非只读)。 例如: interface Todo { readonly title: string; readonly description: string; readonly completed: boolean; 阅读全文
posted @ 2022-09-22 02:24 Laggage 阅读(61) 评论(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 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 实现一个通用的PartialByKeys<T, K>,它接收两个类型参数T和K。 K指定应设置为可选的T的属性集。当没有提供K时,它就和普通的Partial<T>一样使所有属性都是可选的。 例如: interface User { name: string; age: number; a 阅读全文
posted @ 2022-09-21 19:31 Laggage 阅读(66) 评论(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 阅读(69) 评论(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:53 Laggage 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 找出T中类型为U的属性 示例: type OnlyBoolean = PickByType< { name: string; count: number; isReadonly: boolean; isEnable: boolean; }, boolean >; // { isReado 阅读全文
posted @ 2022-09-21 00:44 Laggage 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 实现 RemoveIndexSignature<T>, 将索引字段从对象中排除掉. 示例: type Foo = { [key: string]: any; foo(): void; }; type A = RemoveIndexSignature<Foo>; // expected { 阅读全文
posted @ 2022-09-21 00:41 Laggage 阅读(97) 评论(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 阅读(79) 评论(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:01 Laggage 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 实现类型 PercentageParser。根据规则 /^(\+|\-)?(\d*)?(\%)?$/ 匹配类型 T。 匹配的结果由三部分组成,分别是:[正负号, 数字, 单位],如果没有匹配,则默认是空字符串。 例如: type PString1 = ''; type PString2 阅读全文
posted @ 2022-09-19 00:55 Laggage 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 实现一个ReplaceKeys类型, 这个类型可以替换联合类型中指定属性的类型, 如果联合类型中的某个类型没有这个属性, 那就跳过; ReplaceKeys接受 3 个泛型参数. 例如: type NodeA = { type: 'A'; name: string; flag: numb 阅读全文
posted @ 2022-09-18 19:16 Laggage 阅读(51) 评论(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 阅读(78) 评论(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 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 在类型系统中实现类似于 Python 中 any 函数。类型接收一个数组,如果数组中任一个元素为真,则返回 true,否则返回 false。如果数组为空,返回 false。 例如: type Sample1 = AnyOf<[1, '', false, [], {}]>; // expe 阅读全文
posted @ 2022-09-08 22:01 Laggage 阅读(50) 评论(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:10 Laggage 阅读(51) 评论(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 阅读(74) 评论(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 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 实现一个接收string,number或bigInt类型参数的Absolute类型,返回一个正数字符串。 例如 type Test = -100; type Result = Absolute<Test>; // expected to be "100" English Implemen 阅读全文
posted @ 2022-09-06 21:13 Laggage 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 实现一个为接口添加一个新字段的类型。该类型接收三个参数,返回带有新字段的接口类型。 例如: type Test = { id: '1' } type Result = AppendToObject<Test, 'value', 4> // expected to be { id: '1' 阅读全文
posted @ 2022-09-06 21:02 Laggage 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 题目 中文 在这个挑战中,你需要写一个接受数组的类型,并且返回扁平化的数组类型。 例如: type flatten = Flatten<[1, 2, [3, 4], [[[5]]]]> // [1, 2, 3, 4, 5] English In this challenge, you would n 阅读全文
posted @ 2022-09-06 20:52 Laggage 阅读(44) 评论(0) 推荐(0) 编辑