microsoft / microsoft/TypeScript-Website
More examples of `infer`
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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- 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