Что 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; }
Только для чтения, Partial и Pick гомоморфны, а Record - нет. Один признак того, что Record не является гомоморфным, заключается в том, что для копирования свойств не требуется тип ввода:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
И это все. Помимо приведенных выше цитат, нет других упоминаний Recordо typescriptlang.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}