More examples of `infer`

Aperta Adatta ai principianti
#2,998 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
65/100
Tipo di issue
Documentazione
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
typescript
Ambito
documentation

Direzione di ricerca

Inizia dalla sezione della documentazione sui Conditional Types e rivedi gli esempi esistenti di infer. Aggiungi esempi che coprano la rimozione del primo elemento da un array, il parsing dei template literal, l'inferenza di un singolo carattere e la ricorsione, quindi verifica che gli esempi vengano renderizzati correttamente e che i tipi risultanti indicati siano accurati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
TypeScript
Stelle
2.6k
Fork
1.5k
Merge medio
2g 2h
PR unite (30g)
7

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/TypeScript-Website

Tutte le issue di microsoft/TypeScript-Website

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.