TypeScript Record Utility Type
`Record< K, T >` utility type, belirli bir anahtar kümesi (`K`) ile aynı tipte (`T`) değerler eşlemek için kullanılır. Tip güvenliğine katkı sağlar ve sık kullanılan veri yapılarını kolaylaştırır.
Temel Record Kullanımı
type User = {
id: number;
name: string;
};
type UserMap = Record<string, User>;
const users: UserMap = {
"u1": { id: 1, name: "Alice" },
"u2": { id: 2, name: "Bob" }
};
console.log(users.u1.name);
// Output: Alice
`Record< string, User >` gibi kullanımlarda, string anahtarlar ile `User` tipinde değerler eşleştirilir. Özellikle objeye benzer yapılarda tercih edilir.
Enum Tarzı Durumlar İçin Record
type Status = "pending" | "approved" | "rejected";
type StatusMessages = Record<Status, string>;
const messages: StatusMessages = {
pending: "Your request is being reviewed.",
approved: "Your request has been approved!",
rejected: "Your request was rejected."
};
console.log(messages.approved);
// Output: Your request has been approved!
`Record` ile sabit anahtar değer çiftleri oluşturmak çok pratiktir. Bu örnekte her durum için özel mesaj tanımlanmıştır.
Gerçek Hayat Örneği: Haftalık Takvim
type Day = "mon" | "tue" | "wed";
type Schedule = Record<Day, string[]>;
const mySchedule: Schedule = {
mon: ["Gym", "Meeting"],
tue: ["Coding"],
wed: ["Review", "Team Lunch"]
};
console.log(mySchedule["tue"]);
// Output: ["Coding"]
Bir uygulamada kullanıcı takvimi gibi yapılar oluştururken `Record` kullanmak, hem okunabilirlik hem de tip güvenliği açısından avantajlıdır.
Ne Zaman Kullanılır?
`Record` utility type; lookup tablosu, sabit eşleme yapıları, çeviri dosyaları, durum yönetimi gibi birçok senaryoda hayat kurtarıcıdır.
Geri