Was Record<K, T>bedeutet in Typescript?
Typescript 2.1 führte den RecordTyp ein und beschrieb ihn in einem Beispiel:
// 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>
siehe Typoskript 2.1
Und die erweiterte Typen Seite erwähnt Recordunter dem Mapped Typ Überschrift neben Readonly, Partialund Pickin dem, was scheint seine Definition zu sein:
type Record<K extends string, T> = { [P in K]: T; }
Readonly, Partial und Pick sind homomorph, Record hingegen nicht. Ein Hinweis darauf, dass Record nicht homomorph ist, ist, dass kein Eingabetyp zum Kopieren von Eigenschaften erforderlich ist von:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Und das ist es. Außer den obigen Zitaten gibt es keine andere Erwähnung Recordauf typescriptlang.org .
Fragen
Kann jemand eine einfache Definition dessen geben, was
Recordist?Ist es
Record<K,T>nur eine Art zu sagen, dass "alle Eigenschaften dieses Objekts einen Typ habenT"? Wahrscheinlich nicht alle Eigenschaften, daKhat einen Zweck ...Verbietet das
KGenerikum zusätzliche Schlüssel für das Objekt, die dies nicht sind?K, oder erlaubt es sie und zeigt nur an, dass ihre Eigenschaften nicht transformiert werdenT?Mit dem gegebenen Beispiel:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Ist es genau das gleiche?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}