Co Record<K, T>
oznacza w maszynie?
Typescript 2.1 wprowadził Record
typ, opisując go na przykładzie:
// 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>
patrz Typescript 2.1
Oraz zaawansowane typy strona wymienia Record
pod odwzorowane Rodzaje tytule obok Readonly
, Partial
i Pick
, w co wydaje się być jego definicja:
type Record<K extends string, T> = { [P in K]: T; }
Tylko do odczytu, Częściowe i Pick są homomorficzne, podczas gdy Record nie. Jedną wskazówką, że Record nie jest homomorficzny, jest to, że nie przyjmuje typu wejściowego do kopiowania właściwości z:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
I to wszystko. Poza powyższymi cytatami nie ma innej wzmianki o Record
na typescriptlang.org .
pytania
Czy ktoś może podać prostą definicję tego, co
Record
jest?Czy jest to
Record<K,T>
tylko sposób na powiedzenie „wszystkie właściwości tego obiektu będą miały typT
”? Prawdopodobnie nie wszystkie właściwości, ponieważK
mają jakiś cel ...Czy
K
rodzaj ogólny zabrania dodatkowych kluczy w obiekcie, które nie sąK
, czy też zezwala na nie i po prostu wskazuje, że ich właściwości nie są przekształcaneT
?W podanym przykładzie:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Czy to dokładnie to samo co to ?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}