Búsqueda de sitios web

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?