อะไร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>
และประเภทสินค้าทุกประเภทหน้ากล่าวRecord
ภายใต้ประเภทแมปมุ่งหน้าไปข้างReadonly
, Partial
และPick
ในสิ่งที่ดูเหมือนจะเป็นความหมายของมัน
type Record<K extends string, T> = { [P in K]: T; }
อ่านอย่างเดียวบางส่วนและเลือกเป็น homomorphic ในขณะที่บันทึกไม่ได้ เงื่อนงำหนึ่งที่ Record ไม่ใช่ homomorphic คือมันไม่ใช้ประเภทอินพุตเพื่อคัดลอกคุณสมบัติจาก:
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}