Co Record<K, T>oznacza w maszynie?
Typescript 2.1 wprowadził Recordtyp, 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 Recordpod odwzorowane Rodzaje tytule obok Readonly, Partiali 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 Recordna typescriptlang.org .
pytania
Czy ktoś może podać prostą definicję tego, co
Recordjest?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żKmają jakiś cel ...Czy
Krodzaj 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}