TypeScript Difícil · Práctica

Convierte ideas en código

Ejecuta cada solución en un entorno aislado. Los ejercicios simples validan la salida y los complejos usan pruebas educativas.

01

Extraer el retorno

Difícil

Define Retorno<T> con infer para obtener el tipo devuelto por una función.

Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

TypeScript se carga al ejecutar
Pendiente

Consola / output

La salida aparecerá aquí.

    Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

    02

    Distribuir alternativas

    Difícil

    Define EnArray<T> distributivo para que string | number produzca string[] | number[].

    Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

    TypeScript se carga al ejecutar
    Pendiente

    Consola / output

    La salida aparecerá aquí.

      Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

      03

      Desenvolver Promises

      Difícil

      Define Desenvolver<T> recursivo para extraer Promises anidadas.

      Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

      TypeScript se carga al ejecutar
      Pendiente

      Consola / output

      La salida aparecerá aquí.

        Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

        04

        Generar nombres de eventos

        Difícil

        Define Eventos<T> que remapee cada clave string K a onK y conserve un callback con T[K].

        Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

        TypeScript se carga al ejecutar
        Pendiente

        Consola / output

        La salida aparecerá aquí.

          Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

          05

          Separar una ruta literal

          Difícil

          Define Partes<T> para separar 'usuarios/42' en la tupla ['usuarios', '42'].

          Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

          TypeScript se carga al ejecutar
          Pendiente

          Consola / output

          La salida aparecerá aquí.

            Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

            06

            Indexar por una clave segura

            Difícil

            Implementa indexar<T, K extends keyof T>(valores, clave): Map<T[K], T> sin perder la relación de la clave.

            Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

            TypeScript se carga al ejecutar
            Pendiente

            Consola / output

            La salida aparecerá aquí.

              Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

              07

              Separar productores y consumidores

              Difícil

              Declara Productor<out T> como () => T y Consumidor<in T> como (valor: T) => void.

              Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

              TypeScript se carga al ejecutar
              Pendiente

              Consola / output

              La salida aparecerá aquí.

                Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

                08

                Inferir una tupla literal

                Difícil

                Implementa conservar<const T extends readonly unknown[]>(valor: T): T.

                Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

                TypeScript se carga al ejecutar
                Pendiente

                Consola / output

                La salida aparecerá aquí.

                  Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

                  09

                  Identificador validado

                  Difícil

                  Declara UsuarioId como string con marca unique symbol e implementa usuarioId(texto) que rechace cadenas vacías y devuelva la marca.

                  Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

                  TypeScript se carga al ejecutar
                  Pendiente

                  Consola / output

                  La salida aparecerá aquí.

                    Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

                    10

                    Leer una frontera unknown

                    Difícil

                    Implementa textoSeguro(valor: unknown): string con typeof; evita any y assertions.

                    Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

                    TypeScript se carga al ejecutar
                    Pendiente

                    Consola / output

                    La salida aparecerá aquí.

                      Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

                      11

                      Recorrer un árbol tipado

                      Difícil

                      Declara Nodo<T> con valor e hijos readonly; implementa contar para devolver la cantidad total de nodos.

                      Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

                      TypeScript se carga al ejecutar
                      Pendiente

                      Consola / output

                      La salida aparecerá aquí.

                        Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

                        12

                        Ampliar un módulo en memoria

                        Difícil

                        Importa Observable desde './observable' y amplía su interface con map<U> sin crear un módulo de red.

                        Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

                        TypeScript se carga al ejecutar
                        Pendiente

                        Consola / output

                        La salida aparecerá aquí.

                          Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

                          13

                          Decorator moderno de método

                          Difícil

                          Implementa registrar para un método moderno: recibe el método y el subconjunto name/private/static de ClassMethodDecoratorContext, y devuelve un wrapper que delega.

                          Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

                          TypeScript se carga al ejecutar
                          Pendiente

                          Consola / output

                          La salida aparecerá aquí.

                            Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.

                            14

                            Fijar una API con tests de tipos

                            Difícil

                            Implementa envolver<T>(valor: T): { valor: T } y añade una prueba negativa con @ts-expect-error para envolver<string>(3).

                            Enter ejecuta. Shift+Enter inserta una línea. Ctrl/Cmd+Enter también ejecuta todo el editor.

                            TypeScript se carga al ejecutar
                            Pendiente

                            Consola / output

                            La salida aparecerá aquí.

                              Comprueba con TypeScript 5.9.3 en un único Worker lazy y ejecuta sólo el JavaScript emitido dentro del sandbox existente. No ofrece Language Service, paquetes npm ni imports de red; los módulos educativos usan un VFS acotado.