¿Qué Record<K, T>
significa en mecanografiado?
Typecript 2.1 introdujo el Record
tipo, describiéndolo en un ejemplo:
// For every properties K of type T, transform it to U function mapObject<K extends string, T, U>(obj: Record<K, T>, f: (x: T) => U): Record<K, U>
ver Typecript 2.1
Y el Tipos avanzada página menciona Record
bajo los tipos mapeados en dirección al lado Readonly
, Partial
y Pick
, en lo que parece ser su definición:
type Record<K extends string, T> = { [P in K]: T; }
Readonly, Partial y Pick son homomórficos, mientras que Record no lo es. Una pista de que Record no es homomórfico es que no se necesita un tipo de entrada para copiar propiedades de:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Y eso es. Además de las citas anteriores, no hay otra mención Record
en typescriptlang.org .
Preguntas
¿Alguien puede dar una definición simple de lo que
Record
es?¿Es
Record<K,T>
simplemente una forma de decir "todas las propiedades en este objeto tendrán tipoT
"? Probablemente no todas las propiedades, ya queK
tiene algún propósito ...¿El
K
genérico prohíbe claves adicionales en el objeto que no lo sonK
, o las permite y solo indica que sus propiedades no se transformanT
?Con el ejemplo dado:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
¿Es exactamente lo mismo que esto ?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}