09 2022 档案

摘要:题目 中文 实现二叉树的中序遍历 示例: 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 阅读(30) 评论(0) 推荐(0) 编辑
摘要:题目 中文 Block,Element,Modifier 方法(BEM)是 CSS 中类的流行命名约定。 例如,块组件用 btn 表示,依赖于块的元素用 btn__price 表示,更改块样式的修饰符将用 btn--big 或者 btn__price--warning表示。 实现从这三个参数生成字符 阅读全文
posted @ 2022-09-25 21:32 Laggage 阅读(69) 评论(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 阅读(49) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现 lodash 中_.flip方法的类型版本 FlipArguments<T>类型接收泛型参数 T 并返回一个函数类型, 且此函数类型有和 T 相同的返回类型但其参数的顺序是倒过来的 English Implement the type version of lodash's _.f 阅读全文
posted @ 2022-09-24 20:05 Laggage 阅读(30) 评论(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 阅读(56) 评论(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 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现 Object.entries 的类型版本 示例: interface Model { name: string; age: number; locations: string[] | null; } type modelEntries = ObjectEntries<Model>; 阅读全文
posted @ 2022-09-22 21:12 Laggage 阅读(98) 评论(0) 推荐(0) 编辑
摘要:题目 中文 从T中选出一组无法分配给U的属性 示例: type OmitBoolean = OmitByType< { name: string; count: number; isReadonly: boolean; isEnable: boolean; }, boolean >; // { na 阅读全文
posted @ 2022-09-22 20:45 Laggage 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个通用的类型 Mutable<T>,使类型 T 的全部属性可变(非只读)。 例如: interface Todo { readonly title: string; readonly description: string; readonly completed: boolean; 阅读全文
posted @ 2022-09-22 02:24 Laggage 阅读(88) 评论(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 阅读(60) 评论(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 阅读(75) 评论(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 阅读(94) 评论(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 阅读(202) 评论(0) 推荐(0) 编辑
摘要:题目 中文 找出T中类型为U的属性 示例: type OnlyBoolean = PickByType< { name: string; count: number; isReadonly: boolean; isEnable: boolean; }, boolean >; // { isReado 阅读全文
posted @ 2022-09-21 00:44 Laggage 阅读(44) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现 RemoveIndexSignature<T>, 将索引字段从对象中排除掉. 示例: type Foo = { [key: string]: any; foo(): void; }; type A = RemoveIndexSignature<Foo>; // expected { 阅读全文
posted @ 2022-09-21 00:41 Laggage 阅读(126) 评论(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 阅读(96) 评论(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 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现类型 PercentageParser。根据规则 /^(\+|\-)?(\d*)?(\%)?$/ 匹配类型 T。 匹配的结果由三部分组成,分别是:[正负号, 数字, 单位],如果没有匹配,则默认是空字符串。 例如: type PString1 = ''; type PString2 阅读全文
posted @ 2022-09-19 00:55 Laggage 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个ReplaceKeys类型, 这个类型可以替换联合类型中指定属性的类型, 如果联合类型中的某个类型没有这个属性, 那就跳过; ReplaceKeys接受 3 个泛型参数. 例如: type NodeA = { type: 'A'; name: string; flag: numb 阅读全文
posted @ 2022-09-18 19:16 Laggage 阅读(86) 评论(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 阅读(113) 评论(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 阅读(132) 评论(0) 推荐(0) 编辑
摘要:题目 中文 在类型系统中实现类似于 Python 中 any 函数。类型接收一个数组,如果数组中任一个元素为真,则返回 true,否则返回 false。如果数组为空,返回 false。 例如: type Sample1 = AnyOf<[1, '', false, [], {}]>; // expe 阅读全文
posted @ 2022-09-08 22:01 Laggage 阅读(65) 评论(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 阅读(67) 评论(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 阅读(91) 评论(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 阅读(50) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个接收string,number或bigInt类型参数的Absolute类型,返回一个正数字符串。 例如 type Test = -100; type Result = Absolute<Test>; // expected to be "100" English Implemen 阅读全文
posted @ 2022-09-06 21:12 Laggage 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个为接口添加一个新字段的类型。该类型接收三个参数,返回带有新字段的接口类型。 例如: type Test = { id: '1' } type Result = AppendToObject<Test, 'value', 4> // expected to be { id: '1' 阅读全文
posted @ 2022-09-06 21:02 Laggage 阅读(61) 评论(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 阅读(53) 评论(0) 推荐(0) 编辑
摘要:题目 中文 计算字符串的长度,类似于 String#length 。 English Compute the length of a string literal, which behaves like String#length. 答案 解法1 type StringToArrray<T exte 阅读全文
posted @ 2022-09-06 20:36 Laggage 阅读(129) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现联合类型的全排列,将联合类型转换成所有可能的全排列数组的联合类型。 type perm = Permutation<'A' | 'B' | 'C'>; // ['A', 'B', 'C'] | ['A', 'C', 'B'] | ['B', 'A', 'C'] | ['B', 'C' 阅读全文
posted @ 2022-09-06 00:12 Laggage 阅读(109) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现内置的 Parameters<T> 类型,而不是直接使用它,可参考TypeScript官方文档。 例如: const foo = (arg1: string, arg2: number): void => {} type FunctionParamsType = MyParamete 阅读全文
posted @ 2022-09-05 20:39 Laggage 阅读(263) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个泛型 AppendArgument<Fn, A>,对于给定的函数类型 Fn,以及一个任意类型 A,返回一个新的函数 G。G 拥有 Fn 的所有参数并在末尾追加类型为 A 的参数。 type Fn = (a: number, b: string) => number type Re 阅读全文
posted @ 2022-09-05 20:35 Laggage 阅读(56) 评论(0) 推荐(0) 编辑
摘要:答案 中文 实现 ReplaceAll<S, From, To> 将一个字符串 S 中的所有子字符串 From 替换为 To。 例如 type replaced = ReplaceAll<'t y p e s', ' ', ''> // 期望是 'types' English Implement R 阅读全文
posted @ 2022-09-05 20:18 Laggage 阅读(471) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现 Replace<S, From, To> 将字符串 S 中的第一个子字符串 From 替换为 To 。 例如 type replaced = Replace<'types are fun!', 'fun', 'awesome'> // 期望是 'types are awesome! 阅读全文
posted @ 2022-09-05 20:00 Laggage 阅读(151) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现 Capitalize<T> 它将字符串的第一个字母转换为大写,其余字母保持原样。 例如 type capitalized = Capitalize<'hello world'> // expected to be 'Hello world' English Implement Ca 阅读全文
posted @ 2022-09-05 19:41 Laggage 阅读(293) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现Trim<T>,它是一个字符串类型,并返回一个新字符串,其中两端的空白符都已被删除。 例如 type trimed = Trim<' Hello World '> // expected to be 'Hello World' English Implement Trim<T> wh 阅读全文
posted @ 2022-09-04 23:25 Laggage 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现 TrimLeft<T> ,它接收确定的字符串类型并返回一个新的字符串,其中新返回的字符串删除了原字符串开头的空白字符串。 例如 type trimed = TrimLeft<' Hello World '> // 应推导出 'Hello World ' English Implem 阅读全文
posted @ 2022-09-04 23:16 Laggage 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题目 中文 有时,您可能希望根据某个属性在联合类型中查找类型。 在此挑战中,我们想通过在联合类型Cat | Dog中搜索公共type字段来获取相应的类型。换句话说,在以下示例中,我们期望LookUp<Dog | Cat, 'dog'>获得Dog,LookUp<Dog | Cat, 'cat'>获得C 阅读全文
posted @ 2022-09-04 23:01 Laggage 阅读(59) 评论(0) 推荐(0) 编辑
摘要:题目 中文 键入函数PromiseAll,它接受PromiseLike对象数组,返回值应为Promise<T>,其中T是解析的结果数组。 const promise1 = Promise.resolve(3); const promise2 = 42; const promise3 = new Pr 阅读全文
posted @ 2022-09-04 22:56 Laggage 阅读(324) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个通用Pop<T>,它接受一个数组T,并返回一个由数组T的前length-1项以相同的顺序组成的数组。 例如 type arr1 = ['a', 'b', 'c', 'd'] type arr2 = [3, 2, 1] type re1 = Pop<arr1> // expecte 阅读全文
posted @ 2022-09-04 22:10 Laggage 阅读(59) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个通用Last<T>,它接受一个数组T并返回其最后一个元素的类型。 例如 type arr1 = ['a', 'b', 'c'] type arr2 = [3, 2, 1] type tail1 = Last<arr1> // expected to be 'c' type tai 阅读全文
posted @ 2022-09-04 21:56 Laggage 阅读(55) 评论(0) 推荐(0) 编辑
摘要:题目 中文 在 JavaScript 中我们经常会使用可串联(Chainable/Pipeline)的函数构造一个对象,但在 TypeScript 中,你能合理的给它赋上类型吗? 在这个挑战中,你可以使用任意你喜欢的方式实现这个类型 - Interface, Type 或 Class 都行。你需要提 阅读全文
posted @ 2022-09-04 21:33 Laggage 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现泛型TupleToUnion<T>,它返回元组所有值的合集。 例如 type Arr = ['1', '2', '3'] type Test = TupleToUnion<Arr> // expected to be '1' | '2' | '3' English Implement 阅读全文
posted @ 2022-09-04 20:35 Laggage 阅读(70) 评论(0) 推荐(0) 编辑
摘要:题目 中文 在类型系统里实现 JavaScript 内置的 Array.concat 方法,这个类型接受两个参数,返回的新数组类型应该按照输入参数从左到右的顺序合并为一个新的数组。 例如: type Result = Concat<[1], [2]> // expected to be [1, 2] 阅读全文
posted @ 2022-09-04 20:14 Laggage 阅读(91) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个 IF 类型,它接收一个条件类型 C ,一个判断为真时的返回类型 T ,以及一个判断为假时的返回类型 F。 C 只能是 true 或者 false, T 和 F 可以是任意类型。 例如: type A = If<true, 'a', 'b'> // expected to be 阅读全文
posted @ 2022-09-04 20:10 Laggage 阅读(67) 评论(0) 推荐(0) 编辑
摘要:题目 中文 If we have a type which is wrapped type like Promise. How we can get a type which is inside the wrapped type? For example: if we have Promise<Ex 阅读全文
posted @ 2022-09-04 19:59 Laggage 阅读(429) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现内置的Exclude <T, U>类型,但不能直接使用它本身。 从联合类型T中排除U的类型成员,来构造一个新的类型。 例如: type Result = MyExclude<'a' | 'b' | 'c', 'a'> // 'b' | 'c' English Implement th 阅读全文
posted @ 2022-09-04 19:47 Laggage 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个通用的DeepReadonly<T>,它将对象的每个参数及其子对象递归地设为只读。 您可以假设在此挑战中我们仅处理对象。数组,函数,类等都无需考虑。但是,您仍然可以通过覆盖尽可能多的不同案例来挑战自己。 例如 type X = { x: { a: 1 b: 'hi' } y: ' 阅读全文
posted @ 2022-09-02 23:52 Laggage 阅读(188) 评论(0) 推荐(0) 编辑
摘要:题目 中文 创建一个通用的Length,接受一个readonly的数组,返回这个数组的长度。 例如: type tesla = ['tesla', 'model 3', 'model X', 'model Y'] type spaceX = ['FALCON 9', 'FALCON HEAVY', 阅读全文
posted @ 2022-09-02 23:28 Laggage 阅读(44) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个通用First<T>,它接受一个数组T并返回它的第一个元素的类型。 例如: type arr1 = ['a', 'b', 'c'] type arr2 = [3, 2, 1] type head1 = First<arr1> // expected to be 'a' type 阅读全文
posted @ 2022-09-02 23:23 Laggage 阅读(66) 评论(0) 推荐(0) 编辑
摘要:题目 中文 传入一个元组类型,将这个元组类型转换为对象类型,这个对象类型的键/值都是从元组中遍历出来。 例如: const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const type result = TupleToObject< 阅读全文
posted @ 2022-09-02 23:13 Laggage 阅读(119) 评论(0) 推荐(0) 编辑
摘要:题目 中文 实现一个通用MyReadonly2<T, K>,它带有两种类型的参数T和K。 K指定应设置为Readonly的T的属性集。如果未提供K,则应使所有属性都变为只读,就像普通的Readonly<T>一样。 例如 interface Todo { title: string descripti 阅读全文
posted @ 2022-09-01 21:23 Laggage 阅读(94) 评论(0) 推荐(0) 编辑
摘要:题目 中文 不要使用内置的Readonly<T>,自己实现一个。 该 Readonly 会接收一个 泛型参数,并返回一个完全一样的类型,只是所有属性都会被 readonly 所修饰。 也就是不可以再对该对象的属性赋值。 例如: interface Todo { title: string descr 阅读全文
posted @ 2022-09-01 20:59 Laggage 阅读(54) 评论(0) 推荐(0) 编辑
摘要:题目要求 实现 TS 内置的 Pick<T, K>,但不可以使用它。 从类型 T 中选择出属性 K,构造成一个新的类型。 例如: interface Todo { title: string description: string completed: boolean } type TodoPrev 阅读全文
posted @ 2022-09-01 20:27 Laggage 阅读(81) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示