kakasoo

startWith, endWith : ~로 시작하거나 끝나는 문자열 타입 본문

프로그래밍/TypeScript

startWith, endWith : ~로 시작하거나 끝나는 문자열 타입

카카수(kakasoo) 2023. 4. 13. 00:31
반응형
/**
 * wrong case
 */
// type StartsWith<T extends string, U extends string> = `${U}${string}` extends `${T}` ? true  : false;
type StartsWith<T extends string, U extends string> = T extends `${U}${string}` ? true  : false;

처음에는 위에 주석처럼 풀고 동작하지 않는 것을 보았다.
U에 string을 추가한 것만큼이 결국 T가 아닌가 생각했지만, 'ab'와 string을 조합한 것이 'abc'보다 크다는 걸 뒤늦게 깨달은 것이다.
그래서 extends 문에서의 비교 순서를 거꾸로 하여 T가 U에 string 타입을 더해 더 긴 문자열을 만든 것에 포함된다는 걸로 바꾸었다.

type EndsWith<T extends string, U extends string> = T extends `${string}${U}` ? true : false;
반응형