More examples of `infer`

Abierto Apto para principiantes
#2,998 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
65/100
Tipo de issue
Documentación
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
typescript

Línea de trabajo

Comienza en la sección de documentación de Conditional Types y revisa los ejemplos existentes de infer. Añade ejemplos que cubran la eliminación del primer elemento de un array, el análisis de template literals, la inferencia de caracteres individuales y la recursión; después, verifica que los ejemplos se rendericen correctamente y que los tipos resultantes indicados sean precisos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Documentation is lacking in examples of how to use infer in the Conditional Types section.

For example, one can use infer to unshift an array literal:

type Unshift<T extends any[]> = T extends [infer Head, ...infer Tail] ? Head : never;
type A = Unshift<['a','b','c']>

type A is literal 'a'.

Another useful example would be to demonstrate infer within a template to parse a string type:

type TSVersion = "4.1.2"
type ExtractSemver<Semver extends string> =
    Semver extends `${infer Major}.${infer Minor}.${infer Patch}` ?
    { major: Major, minor: Minor, patch: Patch } : never
type TS = ExtractSemver<TSVersion>

type TS is literal { major: "4", minor: "1", patch : "2"}

Also useful would be to demonstrate the default of infer will be a single char, and to demonstrate recursion:

type NotEmptyString<S extends string> = S extends "" ? never : S;
type Reverse<S extends string> = 
	S extends "" ? S : 
	S extends `${infer B}${infer E}` ? `${Reverse<E>}${B}` : never;
type WorkItAndReverseIt = Reverse<"Foobar">;

type WorkItAndReverseIt is literal rabooF.

Lenguaje dominante
TypeScript
Estrellas
2.6k
Forks
1.5k
Merge medio
2 d 2 h
PR fusionados (30 d)
7

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/TypeScript-Website

Todos los issues de microsoft/TypeScript-Website

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.