Was Record<K, T>
bedeutet in Typescript?
Typescript 2.1 führte den Record
Typ 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 Record
unter dem Mapped Typ Überschrift neben Readonly
, Partial
und Pick
in 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 Record
auf typescriptlang.org .
Fragen
Kann jemand eine einfache Definition dessen geben, was
Record
ist?Ist es
Record<K,T>
nur eine Art zu sagen, dass "alle Eigenschaften dieses Objekts einen Typ habenT
"? Wahrscheinlich nicht alle Eigenschaften, daK
hat einen Zweck ...Verbietet das
K
Generikum 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}