Що 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}