Tenemos este código en nuestro trabajo, que quería saber la diferencia entre él y simplemente escribir manualmente lo mismo.
const tuple = <T extends string[]>(...args: T) => args; const strings = tuple( 'blabla', 'default', 'standard' ); export type Strings = typeof strings[number]; Cuando coloco el cursor sobre "Strings", básicamente es type Strings = 'blabla' | 'default' | 'standard'
Mi pregunta es, ¿por qué no simplemente escribir lo mismo?
type Strings = 'blabla' | 'default' | 'standard';En lugar de todas las cosas de tupla? No puedo ver la diferencia, pero si alguien pudiera explicar por qué estamos usando esta función Tuple, sería genial.
Si no exporta strings , definitivamente es mejor declarar directamente el tipo. Sin embargo, en algunos casos también necesita los valores, y el uso de esa función de tuple le evita tener que especificar cada uno dos veces.
Sin embargo, hay una manera más simple y segura de hacer esto:
export const strings = [ 'blabla', 'default', 'standard' ] as const; // type: readonly ["blabla", "default", "standard"] export type Strings = typeof strings[number] // type Strings = "blabla" | "default" | "standard" Esto hace que las strings sean de solo lectura, por lo que no puede hacer un strings.pop() por ejemplo.