More examples of `infer`
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
- 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.
Altre issue di microsoft/TypeScript-Website
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
microsoft/TypeScript-Website#3611 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
microsoft/TypeScript-Website#3607 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
microsoft/TypeScript-Website#3039 ·
-
@typescript/vfs emits an ExperimentalWarning on Node 26 during localStorage feature detection Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 30/100
microsoft/TypeScript-Website#3650 ·
-
CRITICAL: Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 15/100
microsoft/TypeScript-Website#3636 ·
Tutte le issue di microsoft/TypeScript-Website
Issue simili
-
Type/Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OpenNSW/nsw-srilanka#497 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
0xMiden/bridge-portal#132 ·
-
react-doctor severity:warning tech-debt
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
digidem/comapeo-cloud-app#403 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100