Replace
提出詳細
type Replace<S extends string, From extends string, To extends string> = // Fromが空の場合は、 From extends '' ? // 変換する文字がないのでSをそのまま返す S : // Fromが存在する場合は、 S extends `${infer Left}${From}${infer Right}` ? // Toに置換した文字にする `${Left}${To}${Right}` : // Fromが空ではなく、Sにも存在しない場合は S内で置換できないので Sをそのまま返す S
提出日時 | 2022-07-18 08:25:40 |
---|---|
問題 | Replace |
ユーザー | aa-0921 |
ステータス | Accepted |
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<'', '', ''>, ''>>, ]