| name | typescript-generic-pattern |
| description | null |
Generic Pattern
Category: typescript · Status: 🟢 Active
When to use
Khi viết hàm/type tái dùng cho nhiều kiểu mà vẫn giữ liên kết kiểu input-output.
Steps
- Chỉ dùng generic khi cần liên kết kiểu giữa input và output; nếu không, dùng kiểu cụ thể.
- Ràng buộc type param bằng
extends để giới hạn miền giá trị hợp lệ.
- Dùng
infer trong conditional type để rút kiểu lồng bên trong.
- Đặt tên param có nghĩa (
TItem, TKey) thay vì chỉ T khi có nhiều param.
- Tránh over-generic: nhiều param không dùng đến làm type khó đọc, dễ sai.
Template
function getProp<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
type ElementType<A> = A extends (infer E)[] ? E : never;
type Item = ElementType<User[]>;
Example
Good: K extends keyof T đảm bảo key hợp lệ; return type T[K] suy ra chính xác.
Avoid: function getProp<T, K, V>(...) với param thừa; generic không ràng buộc nhận mọi key.
Checklist