/
00110-medium-capitalize.ts
66 lines (56 loc) · 2.08 KB
/
00110-medium-capitalize.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
110 - Capitalize
-------
by Anthony Fu (@antfu) #中等 #template-literal
### 题目
实现 `Capitalize<T>` 它将字符串的第一个字母转换为大写,其余字母保持原样。
例如
```ts
type capitalized = Capitalize<'hello world'> // expected to be 'Hello world'
```
> 在 Github 上查看:https://tsch.js.org/110/zh-CN
*/
/* _____________ 你的代码 _____________ */
type MyCapitalize<S extends string> = S extends `${infer First}${infer Tail}`
? `${Uppercase<First>}${Tail}`
: S;
/* _____________ 测试用例 _____________ */
import type { Equal, Expect } from "@type-challenges/utils";
type cases = [
Expect<Equal<MyCapitalize<"foobar">, "Foobar">>,
Expect<Equal<MyCapitalize<"FOOBAR">, "FOOBAR">>,
Expect<Equal<MyCapitalize<"foo bar">, "Foo bar">>,
Expect<Equal<MyCapitalize<"">, "">>,
Expect<Equal<MyCapitalize<"a">, "A">>,
Expect<Equal<MyCapitalize<"b">, "B">>,
Expect<Equal<MyCapitalize<"c">, "C">>,
Expect<Equal<MyCapitalize<"d">, "D">>,
Expect<Equal<MyCapitalize<"e">, "E">>,
Expect<Equal<MyCapitalize<"f">, "F">>,
Expect<Equal<MyCapitalize<"g">, "G">>,
Expect<Equal<MyCapitalize<"h">, "H">>,
Expect<Equal<MyCapitalize<"i">, "I">>,
Expect<Equal<MyCapitalize<"j">, "J">>,
Expect<Equal<MyCapitalize<"k">, "K">>,
Expect<Equal<MyCapitalize<"l">, "L">>,
Expect<Equal<MyCapitalize<"m">, "M">>,
Expect<Equal<MyCapitalize<"n">, "N">>,
Expect<Equal<MyCapitalize<"o">, "O">>,
Expect<Equal<MyCapitalize<"p">, "P">>,
Expect<Equal<MyCapitalize<"q">, "Q">>,
Expect<Equal<MyCapitalize<"r">, "R">>,
Expect<Equal<MyCapitalize<"s">, "S">>,
Expect<Equal<MyCapitalize<"t">, "T">>,
Expect<Equal<MyCapitalize<"u">, "U">>,
Expect<Equal<MyCapitalize<"v">, "V">>,
Expect<Equal<MyCapitalize<"w">, "W">>,
Expect<Equal<MyCapitalize<"x">, "X">>,
Expect<Equal<MyCapitalize<"y">, "Y">>,
Expect<Equal<MyCapitalize<"z">, "Z">>
];
/* _____________ 下一步 _____________ */
/*
> 分享你的解答:https://tsch.js.org/110/answer/zh-CN
> 查看解答:https://tsch.js.org/110/solutions
> 更多题目:https://tsch.js.org/zh-CN
*/