Pengantar Pemetaan Tipe TypeScript

Tipe yang dipetakan dalam TypeScript menyediakan cara untuk membuat tipe baru dengan mengubah tipe yang sudah ada. Tipe ini merupakan alat yang ampuh untuk menangani operasi tipe yang kompleks dan memastikan keamanan tipe dalam aplikasi TypeScript. Artikel ini memperkenalkan tipe yang dipetakan, menjelaskan sintaksisnya, dan memberikan contoh untuk menunjukkan penggunaannya.

Apa itu Tipe yang Dipetakan?

Tipe yang dipetakan memungkinkan terciptanya tipe baru dengan menerapkan transformasi pada setiap properti dari tipe yang sudah ada. Tipe ini sering digunakan untuk mengubah atau memperluas tipe dengan cara yang fleksibel. Sintaks dasar dari tipe yang dipetakan adalah:

type MappedType = {
  [K in keyof T]: NewType;
};

Dalam sintaksis ini:

  • T adalah tipe aslinya.
  • K mewakili setiap kunci dalam T.
  • NewType adalah tipe baru yang ditetapkan untuk setiap properti.

Contoh Dasar Jenis yang Dipetakan

Berikut adalah contoh sederhana dari tipe yang dipetakan yang mengubah semua properti dari tipe tertentu menjadi hanya-baca:

type ReadOnly = {
  readonly [K in keyof T]: T[K];
};

type User = {
  name: string;
  age: number;
};

type ReadOnlyUser = ReadOnly;

Dalam contoh ini, tipe yang dipetakan ReadOnly mengubah semua properti tipe User menjadi hanya-baca, menghasilkan tipe baru ReadOnlyUser yang semua propertinya tidak dapat diubah.

Tipe yang Dipetakan dengan Transformasi Tipe

Tipe yang dipetakan juga dapat digunakan untuk mengubah tipe dengan cara yang lebih rumit. Misalnya, tipe yang dipetakan yang menjadikan semua properti bersifat opsional:

type Partial = {
  [K in keyof T]?: T[K];
};

type User = {
  name: string;
  age: number;
};

type PartialUser = Partial;

Dalam contoh ini, tipe yang dipetakan Partial menjadikan semua properti tipe User opsional, sehingga menghasilkan tipe baru PartialUser yang tiap propertinya bersifat opsional.

Menggunakan Tipe yang Dipetakan dengan Tipe Bersyarat

Tipe yang dipetakan dapat digabungkan dengan tipe bersyarat untuk operasi tipe yang lebih canggih. Misalnya, membuat tipe yang hanya menyertakan properti dari tipe tertentu:

type OnlyStrings = {
  [K in keyof T]: T[K] extends string ? T[K] : never;
};

type User = {
  name: string;
  age: number;
  email: string;
};

type StringProperties = OnlyStrings;

Dalam contoh ini, tipe yang dipetakan OnlyStrings menyaring properti yang bukan bertipe string, sehingga menghasilkan tipe baru StringProperties yang hanya memuat properti string dari tipe User.

Jenis Pemetaan Lanjutan

Kasus penggunaan lanjutan untuk tipe yang dipetakan mencakup pembuatan tipe yang mengubah tipe yang ada berdasarkan berbagai kondisi. Misalnya, tipe yang dipetakan yang menambahkan sufiks ke setiap nama properti:

type WithSuffix<T, S extends string> = {
  [K in keyof T as `${string & K}${S}`]: T[K];
};

type User = {
  name: string;
  age: number;
};

type UserWithSuffix = WithSuffix<User, "Prop">;

Dalam contoh ini, tipe yang dipetakan WithSuffix menambahkan sufiks ke setiap nama properti dari tipe User, yang menghasilkan tipe baru UserWithSuffix di mana nama properti memiliki sufiks yang ditentukan.

Kesimpulan

Tipe yang dipetakan dalam TypeScript merupakan fitur serbaguna yang memungkinkan pengembang untuk membuat tipe baru dengan mengubah tipe yang sudah ada. Dengan memahami dan memanfaatkan tipe yang dipetakan, pengembang dapat mengelola transformasi tipe yang kompleks dan memastikan keamanan tipe yang lebih baik dalam kode TypeScript mereka. Tipe yang dipetakan menawarkan kemampuan yang hebat untuk meningkatkan dan menyesuaikan definisi tipe dalam aplikasi TypeScript.