Alias de cadena de TypeScript subcadena repetida
Quiero crear un alias para cadenas WKT. Así que declaré un tipo como el siguiente:
type WicketCoordinates = `${number} ${number}` | `${number} ${number} ${number}`;
Ahora es simple crear un alias para POINT. Pero cuando se trata de otras geometrías como LineString, necesito una cadena que sea una lista separada por comas de n repeticiones del tipo WicketCoordinates.
Con eso quiero decir que quiero un tipo que pueda aceptar todos los siguientes:
let a = "12 34"; // One single WicketCoordinates
let b = "12 34,56 78"; // A combination of two WicketCoordinates separated by comma
let c = "12 34,56 78,90 12"; // A combination of three WicketCoordinates separated by comma
let d = "12 34,56 78, ... ,90 12"; // A combination of n-times WicketCoordinates separated by comma
Así que intenté declarar este tipo:
type WicketCommaSeperatedCoordinates = WicketCoordinates | `${WicketCoordinates},${WicketCoordinates}` | `${WicketCommaSeperatedCoordinates},${WicketCommaSeperatedCoordinates}`;
pero eso viene con el error circularly references itself. Así que intenté este tipo:
type WicketCommaSeperatedCoordinates = {
value:
| WicketCoordinates
| `${WicketCoordinates},${WicketCoordinates}`
| `${WicketCommaSeperatedCoordinates['value']},${WicketCommaSeperatedCoordinates['value']}`;
};
Pero eso también viene con el error referenciado directa o indirectamente en su propia anotación de tipo.
La pregunta absoluta: ¿Hay alguna manera en TypeScript de declarar un tipo que sea un alias de cadena hecho de n repeticiones de una subcadena?