Hur kan jag få längden på en sträng med hjälp av TypeScript-typer?
Jag försöker få längden på en sträng som ett nummer:
type Length = LengthOfString<"hello">
// ^? should be 5
Jag är inte säker på var jag ska börja med detta. Hur kan jag åstadkomma detta?
(Jag försöker lära mig mer om TypeScripts typsystem -- jag tillämpar detta inte på JS-kod)
Svar #1
Ett sätt är att använda en template literal-sträng för att dela upp varje tecken i strängen. Vi lägger till ett element till tuplen L för varje tecken vi kan hämta.
type LengthOfString<T extends string, L extends any[] = []> =
T extends `${string}${infer R}`
? LengthOfString<R, [...L, string]>
: L["length"]
När det inte finns fler tecken kvar, returnerar vi length av L
Resultat :
type Length = LengthOfString<"hello">
// ^? 5
Lekplats
