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: