¿Hay alguna forma de definir ese tipo de tipo en TypeScript? Algo como:
type lowercaseWord = /[az]/¿Pero eso define una cadena en su lugar? (Creo que el código anterior definirá una expresión regular).
Si y no. Hay un tipo LowerCase integrado (intrínseco) pero funciona como un tipo de utilidad. Funciona como String.prototype.toLowerCase y no como expresión regular. Ver ejemplo:
type Result = Lowercase<'A'> // 'a' Aquí puede encontrar más tipos: Lowercase , Sin Capitalize , Uncapitalize , Uppercase
Si desea aplicar dicha restricción, es posible hacerlo en la función:
type UpLetters = 'A' | 'B' | 'C' // provide all allowed letters type LowLetters = Lowercase<UpLetters> type Letters = UpLetters | LowLetters type IsAllowed<T extends string> = T extends Letters ? T extends Lowercase<T> ? T : never : never const lower = <T extends string>(str: IsAllowed<T>) => null /** * Ok */ lower('a') // ok /** * Error */ lower('A') // error lower('1') // error lower('$%^') // errorPor favor, tenga en cuenta que
const x: Lowercase<string> = 'A' // no errorno desencadenará un error