interface LetterDict {
a: 'A';
b: 'B';
c: 'C';
d: 'D';
e: 'E';
f: 'F';
g: 'G';
h: 'H';
i: 'I';
j: 'J';
k: 'K';
l: 'L';
m: 'M';
n: 'N';
o: 'O';
p: 'P';
q: 'Q';
r: 'R';
s: 'S';
t: 'T';
u: 'U';
v: 'V';
w: 'W';
x: 'X';
y: 'Y';
z: 'Z';
};
type MyUppercase<T extends string> =
T extends `${infer F}${infer Tail}`
? F extends keyof LetterDict
? `${LetterDict[F]}${MyUppercase<Tail>}`
: `${F}${MyUppercase<Tail>}`
: T;
Solution by djdidi #37239
type MyUppercase<T extends string> = T extends `${infer F}${infer R}` ? `${Capitalize<F>}${MyUppercase<R>}` : T;
Solution by lvjiaxuan #37191
interface Mapping {
a: 'A'
b: 'B'
c: 'C'
d: 'D'
e: 'E'
f: 'F'
g: 'G'
h: 'H'
i: 'I'
j: 'J'
k: 'K'
l: 'L'
m: 'M'
n: 'N'
o: 'O'
p: 'P'
q: 'Q'
r: 'R'
s: 'S'
t: 'T'
u: 'U'
v: 'V'
w: 'W'
x: 'X'
y: 'Y'
z: 'Z'
}
type MyUppercase<T extends string> = T extends `${infer F}${infer R}`
? `${F extends keyof Mapping ? Mapping[F] : F}${MyUppercase<R>}`
: ''
Solution by Sun79 #36596