Apa yang dimaksud Record<K, T>
dalam naskah?
Jenis naskah 2.1 memperkenalkan Record
jenis tersebut, menjelaskannya dalam contoh:
// 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>
lihat naskah 2.1
Dan Jenis Lanjutan halaman menyebutkan Record
di bawah Jenis dipetakan menuju samping Readonly
, Partial
dan Pick
, dalam apa yang tampaknya menjadi definisi:
type Record<K extends string, T> = { [P in K]: T; }
Readonly, Partial dan Pick bersifat homomorfik sedangkan Record tidak. Satu petunjuk bahwa Record bukan homomorphic adalah bahwa ia tidak mengambil tipe input untuk menyalin properti dari:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Dan itu saja. Selain kutipan di atas, tidak ada lagi disebutkan Record
di typescriptlang.org .
Pertanyaan
Adakah yang bisa memberikan definisi sederhana tentang apa
Record
itu?Apakah
Record<K,T>
hanya cara mengatakan "semua properti pada objek ini akan memiliki tipeT
"? Mungkin tidak semua properti, karenaK
memiliki beberapa tujuan ...Apakah
K
generik melarang kunci tambahan pada objek yang tidakK
, atau apakah itu memperbolehkannya dan hanya menunjukkan bahwa propertinya tidak ditransformasikanT
?Dengan contoh yang diberikan:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Apakah persis sama dengan ini ?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}