✍ 공부/TypeScript

[type-challenges] Replace

Po_tta_tt0 2023. 6. 13. 20:59
반응형

문제

문자열 S에서 From를 찾아 한 번만 To로 교체하는 Replace<S, From, To>를 구현하세요.

설명

/* _____________ 여기에 코드 입력 _____________ */

type Replace<S extends string, From extends string, To extends string> = From extends "" ? S : S extends `${infer A}${From}${infer B}` ? `${A}${To}${B}`: S

/* _____________ 테스트 케이스 _____________ */
import type { Equal, Expect } from '@type-challenges/utils'

type cases = [
  Expect<Equal<Replace<'foobar', 'bar', 'foo'>, 'foofoo'>>,
  Expect<Equal<Replace<'foobarbar', 'bar', 'foo'>, 'foofoobar'>>,
  Expect<Equal<Replace<'foobarbar', '', 'foo'>, 'foobarbar'>>,
  Expect<Equal<Replace<'foobarbar', 'bar', ''>, 'foobar'>>,
  Expect<Equal<Replace<'foobarbar', 'bra', 'foo'>, 'foobarbar'>>,
  Expect<Equal<Replace<'', '', ''>, ''>>,
]

3번 케이스를 통과하기 위해 답을 흘끗 봤다
오늘 문제는 다 쉬워서 좋구만😎⚡

 

<3번 케이스 고려 전>
일단 기본적으로는 S는 From 기준으로 앞에있는 A, B로 나눈다.
S = A + From + B
이걸 A + To + B로 바꿔서 출력하기만 하면 된다.

 

<3번 케이스 고려하기>
그런데 3번은? From이 ""이다.
따라서 애초에 바꿀 From이 ""(없는 문자열)일 때, 그냥 S를 출력해주면 된다.

반응형