keyof, typeof
keyof
keyof, oluşturduğumuz tip objelerinde ki keyler ile yeni tipler oluşturmamıza olanak sağlar. Örneğin aşağıdaki gibi interface ile tip tanımlaması yapmış olalım.
interface Person {
name: string
age: number
location: string
}
Ardından keyof ile yeni bir tip oluşturalım.
type SomeNewType = keyof Person
Oluşturduğumuz tip karşılığı aşağıdaki gibidir.
type SomeNewType: "name" | "age" | "location"
typeof
Oluşturduğumuz objelerin value tiplerini elde etmemizi sağlar. Örneğin aşağıdaki gibi obje oluşturalım.
const bmw = { name: "BMW", power: "1000hp" }
Ardından typeof bmw ile yeni bir tip ataması yapalım.
type Car = typeof bmw;
Yukarıda ki Car tip objesinin karşılığı aşağıdaki gibidir.
type Car = {
name: string;
power: string;
}
keyof ve typeof u birlikte kullanabiliriz. Örneğin yukarıdaki örneğimizde ki gibi bmw objemizi oluşturalım.
const bmw = { name: "BMW", power: "1000hp" }
Ardından keyof ve typeof u birlikte kullanarak yeni bir tip objesi oluşturalım.
type CarLiteralType = keyof typeof bmw;
oluşturduğumuz tip objesinin karşılığı aşağıdaki gibidir.
type CarLiteralType = "name" | "power";