Що Record<K, T>
означає Typescript?
Typescript 2.1 представив Record
тип, описуючи його на прикладі:
// 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>
див. Typescript 2.1
І Advanced Типи сторінки згадується Record
під відображених типів заголовків разом Readonly
, Partial
і Pick
, в тому, що , як видається, його визначення:
type Record<K extends string, T> = { [P in K]: T; }
Readonly, Partial і Pick є гомоморфними, тоді як Record - ні. Один із ключів, що Record не є гомоморфним, - це те, що для копіювання властивостей із:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
І це все. Окрім вищенаведених цитат, Record
на typecriptlang.org немає інших згадок .
Запитання
Чи може хтось дати просте визначення того, що
Record
таке?Чи
Record<K,T>
просто спосіб сказати "всі властивості цього об'єкта матимуть типT
"? Напевно, не всі властивості, оскількиK
мають певне призначення ...Чи
K
забороняє загальне використання додаткових ключів на об'єкті, яких немаєK
, чи це дозволяє їм і просто вказує на те, що їх властивості не трансформуютьсяT
?З наведеним прикладом:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Це точно так само, як це ?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}