Mid #mapped-types#keyof#utility-types
Mapped types là gì? Modifier `+/-` và key remapping `as`
⚡ Trả lời nhanh
Mapped type tạo type mới bằng cách lặp qua các key: `{ [K in keyof T]: ... }`. Có thể thêm/bỏ modifier bằng `+`/`-` với `readonly` và `?`, và lọc hoặc đổi tên key với mệnh đề `as`. Hầu hết utility types (Partial, Readonly, Pick, Record) là mapped type.
Ví dụ
main.ts · sửa được
keyof Tlấy union các key;K in ...lặp qua union đó;T[K]là kiểu value.- Modifier:
-?biến optional thành bắt buộc (nhưRequired),-readonlybỏ readonly,+là mặc định. - Key remapping (TS 4.1): mệnh đề
ascho phép đổi tên (kết hợp template literal nhưget${Capitalize<K>}) hoặc lọc key bằngnever. - Mapped type trên union/mảng/tuple dạng homomorphic (
keyof Ttrực tiếp) giữ modifier và ánh xạ từng phần tử của tuple.