프로그래밍/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;
반응형