Konstrukcje
Template literal types
Interpolacja tekstu na poziomie typów — a czytana wstecz, dopasowywanie wzorca do tekstu.
Czym jest
Budowanie tekstów to połowa oczywista. Połowa istotna jest taka, że ta sama składnia działa w klauzuli extends z infer, co zamienia szablon w parser: S extends \${infer Head}.${infer Rest}\ rozcina na pierwszej kropce. Każdy typ ścieżki, trasy i konwertera wielkości w archiwum to ta jedna myśl powtórzona.
Przykłady
Handler<AppEvent>→"onClick" | "onFocus"Split<'a.b'>→["a", "b"]Dopasowanie od lewej, najkrótsze najpierw — więc
Hto jeden segment, aRcała reszta.Split<'plain'>→["plain"]
Każdy rozwinięty typ powyżej wypisał TypeScript 6.0.3, nie ręka człowieka.
Czego nie robi
- Nie potrafi dopasowywać zachłannie ani od tyłu. Wnioskowanie zawsze bierze najkrótsze dopasowanie od lewej, więc rozcięcie na *ostatnim* separatorze wymaga rekurencji, a nie sprytniejszego wzorca.
- Nie pozostaje skończone samo z siebie. Interpolacja dwóch unii mnoży je, a kilka unii po kilka składników przekroczy limit kompilatora na rozmiar unii.
Wniosek
Szablon w pozycji typu buduje; ten sam szablon w klauzuli extends rozbiera. Nauczenie się czytania ich w drugą stronę to moment przełomu.

