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 dalamT
.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.