Búsqueda de sitios web

typescript - ¿Nombre de propiedad comodín en la interfaz?


Sé que puedes establecer un comodín completo en una interfaz para permitir cualquier propiedad que quieras, como:

interface ITest {
    [wildcard: string]: any;
}

¿Pero hay una manera de que un comodín coincida con un patrón para el nombre de la propiedad?

interface ITest {
    /EndOfKeyName$/: boolean;
    /^startOfKeyName/: string;
}

No tiene que ser regex, solo estoy tratando de mostrar un escenario ideal. Sin embargo, no estoy seguro de que esto sea posible.

Respuesta #1

ACTUALIZACIÓN PARA TS 4.4: Los tipos de plantillas literales ahora se pueden usar como se muestra a continuación, como en la respuesta duplicada. La funcionalidad está documentada como "Firmas de índice de patrón de símbolo y cadena de plantilla".

interface BoolsAndStrings {
    [key: `boolean${string}`]: boolean;
    [key: `string${string}`]: string;
}

área de juego de TypeScript

Si intentas esto en TypeScript 4.3 o anterior, producirá:

El tipo de parámetro de una firma de índice debe ser 'string' o 'number'

Artículos relacionados