microsoft / microsoft/TypeScript-Website

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.

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

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.

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.

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.

Valutazione

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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.