Cosa Record<K, T>significa in dattiloscritto?
Typescript 2.1 ha introdotto il Recordtipo, descrivendolo in un esempio:
// 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>
vedi dattiloscritto 2.1
E la tipi avanzati pagina menziona Recordsotto i Tipi mappati voce al fianco Readonly, Partiale Pick, in quello che sembra essere la sua definizione:
type Record<K extends string, T> = { [P in K]: T; }
Di sola lettura, Parziale e Pick sono omomorfi, mentre Record non lo è. Un indizio che Record non è omomorfo è che non richiede un tipo di input per copiare le proprietà da:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
E questo è tutto. Oltre alle citazioni di cui sopra, non c'è altra menzione Recordsu typescriptlang.org .
Domande
Qualcuno può dare una semplice definizione di ciò che
Recordè?È
Record<K,T>semplicemente un modo di dire "tutte le proprietà su questo oggetto avranno tipoT"? Probabilmente non tutte le proprietà, dal momento cheKha qualche scopo ...Il
Kgenerico proibisce chiavi aggiuntive sull'oggetto che non lo sonoKo le consente e indica semplicemente che le loro proprietà non vengono trasformateT?Con l'esempio fornito:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
È esattamente lo stesso di questo ?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}