dev-hamster
[type-challenges] medium 10-13 본문
Promise.all
Type the function PromiseAll that accepts an array of PromiseLike objects, the returning value should be Promise
where T is the resolved result array.
09번은 너무 어려워서 패스하고 다음에 도전해본다!
Type Lookup
때때로 유니온 타입의 특정 속성을 기준으로 조회할 수도 있습니다.
이 챌린지에서는 유니온 타입 Cat | Dog에서 공통으로 사용하는 type 필드를 기준으로 해당하는 타입을 얻고자 합니다. 다시 말해서, 다음 예시에서는 LookUp<Cat | Dog, 'dog'>으로 Dog 타입을, LookUp<Cat | Dog, 'cat'>으로 Cat 타입을 얻을 수 있습니다.
type LookUp<U, T> = U extends { type: T } ? U : never;Trim Left
정확한 문자열 타입이고 시작 부분의 공백이 제거된 새 문자열을 반환하는 TrimLeft
를 구현하십시오.
빈 공백을 제거하고 재귀적으로 trim을 하려고 했는데 U는 string이 아니라 배열 타입이 되므로 오답이다.
type TrimLeft<S extends string> = S[number] extends [' ', ...infer U] ? TrimLeft<U> : S;리터럴을 이용해 처리할 수 있다.
type Space = ' ' | '\t' | '\n';
type TrimLeft<S extends string> = S extends `${Space}${infer U}` ? TrimLeft<U> : S;Trim
정확한 문자열 타입이고 양쪽 끝의 공백이 제거된 새 문자열을 반환하는 Trim
를 구현하십시오.
TrimLeft 코드에서 분기 처리를 추가하면 된다.
type Space = ' ' | '\t' | '\n';
type Trim<S extends string> = S extends `${Space}${infer U}`
? Trim<U>
: S extends `${infer T}${Space}`
? Trim<T>
: S;유니언으로 처리하면 더 깔끔하게 처리할 수 있다.
type Space = ' ' | '\t' | '\n';
type Trim<S extends string> = S extends `${Space}${infer T}` | `${infer T}${Space}` ? Trim<T> : S;Capitalize
문자열의 첫 글자만 대문자로 바꾸고 나머지는 그대로 놔두는 Capitalize
를 구현하세요.
Capitalize 인터페이스를 사용하면 된다.
type MyCapitalize<S extends string> = S extends `${infer X}${infer T}` ? `${Capitalize<X>}${T}` : S;'타입스크립트 > type-challenges' 카테고리의 다른 글
| [type-challenges] medium 14-16 (0) | 2024.10.25 |
|---|---|
| [type-chllenges] medium 05-08 (2) | 2024.10.22 |
| [type-challenges] medium 01-04 (0) | 2024.10.17 |
| [type-challengs] easy 10-14 (0) | 2024.10.12 |
| [type-challenges] easy 06-09 (1) | 2024.10.11 |