Что 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}