Điều gì có Record<K, T>
nghĩa trong bản đánh máy?
Bản đánh máy 2.1 đã giới thiệu Record
loại, mô tả nó trong một ví dụ:
// 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>
xem bản đánh máy 2.1
Và các loại chi tiết trang đề cập đến Record
dưới loại ánh xạ hướng bên cạnh Readonly
, Partial
và Pick
, trong những gì dường như là định nghĩa của nó:
type Record<K extends string, T> = { [P in K]: T; }
Chỉ đọc, một phần và Pick là đồng hình trong khi Record thì không. Một manh mối cho thấy Bản ghi không đồng hình là nó không lấy loại đầu vào để sao chép các thuộc tính từ:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Và đó là nó. Ngoài các trích dẫn ở trên, không có đề cập nào khác Record
về typecriptang.org .
Câu hỏi
Ai đó có thể đưa ra một định nghĩa đơn giản về những gì
Record
là?Có phải
Record<K,T>
chỉ là một cách để nói "tất cả các thuộc tính trên đối tượng này sẽ có loạiT
"? Có lẽ không phải tất cả tài sản, vìK
có một số mục đích ...Có
K
chung chung cấm các khóa bổ sung trên đối tượng khôngK
, hoặc nó cho phép chúng và chỉ cho biết rằng các thuộc tính của chúng không được chuyển đổi thànhT
?Với ví dụ đã cho:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
Có chính xác như thế này không?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}