es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible verificar si una frase incluye una palabra específica utilizando el tipo de palabra clave en TypeScript?

Tengo una pregunta sobre la palabra clave “type” en typescript.
Puedes ver el código a continuación.
El argumento debe incluir la palabra (‘api’) en el prefijo.
Por supuesto, puedo verificarlo utilizando código como “indexOf”.
Pero quiero utilizar únicamente la palabra clave “type”.

interface SomethingParam {
  url: string
}
function check(url: SomethingParam) {
  console.log(url);
}

check({ url: ‘foobar’ }) // error
check({ url: ‘api/foobar’ }) // ok

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para restringir el argumento de la función check() para que solo acepte URL que incluyan la palabra ‘api’ en su prefijo utilizando la palabra clave type, puedes crear un tipo personalizado de la siguiente manera:

    type APIUrl = string & { __apiUrl: never };
    

    Este tipo define una cadena que también debe tener una propiedad llamada __apiUrl que no puede establecerse en ningún valor. Esto lo convierte efectivamente en un tipo único que sigue siendo compatible con el tipo string.

    Luego puedes actualizar la interfaz SomethingParam para utilizar el tipo APIUrl en lugar de string.

    interface SomethingParam {
      url: APIUrl
    }
    

    Ahora, si intentas pasar una URL que no contiene ‘api’ a la función check(), obtendrás un error de tipo:

    check({ url: 'foobar' }) // Error de tipo: El argumento de tipo '{ url: string; }' no es asignable al parámetro de tipo 'SomethingParam'. Los tipos de propiedad 'url' no son compatibles. El tipo 'string' no es asignable al tipo 'APIUrl'.
    
    check({ url: 'api/foobar' }) // ok
    

    Esto asegurará que solo las cadenas con ‘api’ en su prefijo se puedan utilizar como argumentos para la función check().

Comments are closed.