Saltar al contenido
webtype.org#217 split-string · par 4

N.º 217 · 25 de julio de 2026 · Difícil

Divide

Implementa `Split<S, D>` para que divida la cadena `S` en cada aparición del delimitador `D`, devolviendo una tupla de las piezas.

01

Intenta el puzle tú mismo

Par 4

Puzle

split-string.ts
Intento 1 de 4Aún sin comprobar

Sustituye ??? — tu solución se comprueba con los casos de abajo.

Comprobaciones

4
  • Split<'a,b,c', ','>
    ['a', 'b', 'c']
  • Split<'nope', ','>
    ['nope']
  • Split<'a/b', '/'>
    ['a', 'b']
  • Split<'', ','>
    ['']

Cómo se juzga una comprobación Igualdad exacta de tipos, no asignabilidad — una intersección no es lo mismo que el objeto aplanado.

Cómo le fue a todo el mundo

Nobody is counting yet. Score distribution and the juego corto board arrive with accounts — until then your results stay on this device.

Archivo
02

Solución comentada

Publicado el 26 de julio de 2026

La solución

type Split<S extends string, D extends string> =
  S extends `${infer Head}${D}${infer Tail}` ? [Head, ...Split<Tail, D>] : [S]

El error más común

type Split<S extends string, D extends string> =
  S extends `${infer Head}${D}${infer Tail}` ? [Head, Split<Tail, D>] : [S]

Sin la expansión, cada resultado recursivo queda anidado un nivel más: `["a", ["b", ["c"]]]`. Los `...` son los que aplanan la recursión en una sola tupla.

Línea por línea

  1. `${infer Head}${D}${infer Tail}`

    La inferencia contra un literal de plantilla es ávida desde la izquierda, así que `Head` liga el prefijo más corto que permita encajar el resto del patrón — dando el primer campo, no el último.

  2. [Head, ...Split<Tail, D>]

    La expansión incorpora en línea la tupla recursiva, de modo que cada nivel aporta un elemento a un resultado plano.

  3. : [S]

    No queda delimitador. Toda la cadena restante es la última pieza, envuelta en una tupla para que la expansión de arriba tenga algo que incorporar.

Para recordar

Los tipos de cadena recursivos se descomponen por la cabeza y se reconstruyen con expansiones. Olvidar la expansión es el error más común al construir listas a nivel de tipos.