hoc-lap-trinh-11

Utility Types là gì?

Utility Types là một nhóm các loại (types) có sẵn trong TypeScript, được thiết kế để giúp người dùng thao tác và chuyển đổi các kiểu dữ liệu một cách dễ dàng hơn. Những loại này cung cấp các cách để tạo ra các loại mới từ các loại hiện có bằng cách thêm, loại bỏ, hoặc thay đổi các thuộc tính của chúng.

Tại sao phải học Utility Types?

  1. Tăng tính linh hoạt: Utility Types giúp bạn dễ dàng tạo ra các kiểu mới dựa trên các kiểu hiện có mà không cần phải viết lại toàn bộ định nghĩa của chúng.
  2. Giảm bớt lỗi: Bằng cách sử dụng các Utility Types, bạn có thể đảm bảo rằng các kiểu dữ liệu của bạn nhất quán và dễ duy trì hơn. Điều này giúp giảm thiểu lỗi trong quá trình phát triển.
  3. Tiết kiệm thời gian: Utility Types giúp bạn tiết kiệm thời gian bằng cách cung cấp các công cụ mạnh mẽ để xử lý các loại phức tạp mà không cần phải viết mã từ đầu.
  4. Tăng tính rõ ràng: Sử dụng Utility Types giúp mã của bạn trở nên rõ ràng hơn, dễ đọc và dễ hiểu hơn cho các lập trình viên khác.

Một số kiểu Utility Types cơ bản

  1. Partial<T>: Tạo ra một loại mới từ loại T trong đó tất cả các thuộc tính là tùy chọn (optional).
interface User {
    name: string;
    age: number;
}

const partialUser: Partial<User> = {
    name: "John"
};

2. Required<T>: Tạo ra một loại mới từ loại T trong đó tất cả các thuộc tính là bắt buộc (required).

interface User {
    name?: string;
    age?: number;
}

const requiredUser: Required<User> = {
    name: "John",
    age: 25
};

3. Readonly<T>: Tạo ra một loại mới từ loại T trong đó tất cả các thuộc tính chỉ có thể đọc (readonly).

interface User {
    name: string;
    age: number;
}

const readonlyUser: Readonly<User> = {
    name: "John",
    age: 25
};

// readonlyUser.name = "Doe"; // Error: cannot reassign a readonly property

4. Pick<T, K>: Tạo ra một loại mới từ loại T bằng cách chọn một tập hợp con các thuộc tính K của nó.

interface User {
    name: string;
    age: number;
    email: string;
}

const userWithNameAndEmail: Pick<User, 'name' | 'email'> = {
    name: "John",
    email: "[email protected]"
};

6. Record<K, T>: Tạo ra một đối tượng loại với các phím K và các giá trị T.

const userRoles: Record<string, string> = {
    admin: "Admin User",
    guest: "Guest User"
};

6. Omit<K, T>: Tạo ra một loại mới từ loại T bằng cách loại bỏ một tập hợp con các thuộc tính K của nó.

// Omit<T, K>: T: type goc ban dau, K: Union Type
const userWithoutEmail: Omit<User, "email" | "age"> = {
  name: "John",
};

type Product = {
  id: string;
  title: string;
  image: string;
  user: {
    id: string;
    age: number;
  };
};

Hiểu và sử dụng thành thạo các Utility Types này giúp bạn viết mã TypeScript mạnh mẽ, linh hoạt và dễ bảo trì hơn.


By hoadv

Leave a Reply

Your email address will not be published. Required fields are marked *