-
Notifications
You must be signed in to change notification settings - Fork 0
/
00110-medium-capitalize.ts
40 lines (38 loc) · 1.56 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
// ============= Test Cases =============
import type { Equal, Expect } from "./test-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">>
];
// ============= Your Code Here =============
type MyCapitalize<S extends string> = S extends `${infer First}${infer Rest}`
? `${Uppercase<First>}${Rest}`
: S;