Utility Types
Record
Type ini membuat tipe yang berupa object, dengan tipe ini developer bisa mendeklarasikan value baru ke dalam tipe tersebut. bagaimana menggunakkan tipe data ini
type Param = Record<string, unknown>
function f(obj: Params){
return obj
}
f({name: "james"})
f(new Date)
f("james") // Error
selain menggunakkan tipe data ini, bisa menggunakan kode berikut untuk membuat tipe data object
type Param {
[key: string]: unknown
}
Pick
tipe data ini hanya mengambil tipe data yang sudah ada di tipe data yang lain
misal ada terdapat tipe data berikut
interface Person {
name: string
age: number
address: string
}
kemudia developer ingin membuat type data baru, namun hanya ingin mengambil tipe data name dan age saja.
maka definisi typenya seperti ini
interface Person {
name: string;
age: number;
address: string;
}
type PersonBio = Pick<Person, "name" | "age >
Omit
layaknya seperti utility Pick, perilaku Omit berbanding terbalik dengan Pick. Omit akan mengambil tipe tipe yang dikecualikan dalam definisinya. sebagai contoh berikut
interface Person {
name: string;
age: number;
address: string;
}
type PersonBio = Omit<Person, "name" | "age >
tipe bio hanya akan mengambil semua tipe, keculia name dan age
jadi ketika developer melakukan deklarasi value ke tipe tersebut maka akan error.
interface Person {
name: string;
age: number;
address: string;
}
type PersonBio = Omit<Person, "name" | "age" >
const data: PersonBio = {
name:"hello" // Error: Object literal may only specify known properties, and 'name' does not exist in type 'PersonBio'.
}
const addressPerson: PersonBio = {
address: "world"
}
References: