Skip to main content

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: