¿Qué Record<K, T>significa en mecanografiado?
Typecript 2.1 introdujo el Recordtipo, 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 Recordbajo los tipos mapeados en dirección al lado Readonly, Partialy 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 Recorden typescriptlang.org .
Preguntas
¿Alguien puede dar una definición simple de lo que
Recordes?¿Es
Record<K,T>simplemente una forma de decir "todas las propiedades en este objeto tendrán tipoT"? Probablemente no todas las propiedades, ya queKtiene algún propósito ...¿El
Kgené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}