We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
infer
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'.
type A
'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"}
type TS
{ 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.
type WorkItAndReverseIt
rabooF
The text was updated successfully, but these errors were encountered:
No branches or pull requests
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 A
is literal'a'
.Another useful example would be to demonstrate
infer
within a template to parse a string type: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 WorkItAndReverseIt
is literalrabooF
.The text was updated successfully, but these errors were encountered: