Geri

TypeScript İpuçları ve Püf Noktaları - 1

TypeScript İpuçları ve Püf Noktaları - 1

Birçok geliştirici projelerinde TypeScript kullanıyor ancak bu güçlü aracın tüm yeteneklerinin farkında mıyız? TypeScript genellikle sadece veri tiplerini tanımlamak için kullanılıyor gibi düşünülse de, gelişmiş özellikleri çok daha fazlasını sunuyor. Örneğin:

Fonksiyonlar için katı parametre kuralları tanımlayabilirsiniz.

Nesnelerden (Object) belirli özellikleri kaldırabilirsiniz.

TypeScript, dinamik ve uyarlanabilir veri tipleri oluşturmanıza olanak tanır.

Bu gelişmiş özellikleri öğrenmek, TypeScript’in sunduğu tüm potansiyeli projelerinizde kullanmanızı sağlar.

Fonksiyonlar için Katı Parametre Kuralları Tanımlama

Elimizde aşağıdaki gibi bir nesne (Object) olduğunu varsayalım:

const testObj = {
    name: 'Jhon',
    surname: 'Doe',
    age: 28
}

Anahtardan (key) değer döndüren bir fonksiyon yazmak istiyoruz.

Bunu JavaScript’te kolayca yapabiliriz ancak gelin TypeScript’te nasıl yapılacağına bakalım.

const getValueFromArray = (obj,key) => obj[key]
// in Type script, we can use it like:

const getValueFromArray =<T extends Object> (obj:T, key: keyof T): T[keyof T] => obj[key]

Bu yöntem, daha güvenli bir kullanım sağlar çünkü kullanıcı, nesnede olmayan bir anahtarı veremez.

Nesnelerden Özellik Silme

JavaScript’te bir nesneden özellik (property) silmek oldukça kolaydır. Ancak TypeScript kullanıyorsak, bunu tip üzerinden kaldırmak daha sağlıklı olur. Peki nasıl?

Şimdi bunu nasıl yapacağımıza birlikte bakalım.

// in JS, we can do it like:
const removeKey = (obj, key) => delete obj[key] 

// in typeScript we should use generic 
const removeKey = <T extends Object, K extends keyof T>(obj: T, key: K): Omit<T, K> => 
delete obj[key] as any

TypeScript’te bu işlem için iki generic tür kullanmalıyız: biri nesne için, diğeri silinecek anahtar için. Dönen türde ise `Omit` ile istenen özelliği kaldırabiliriz.

Ek olarak, aynı mantığı dizilerdeki (array) elemanları kaldırmak için de uygulayabiliriz.

const removeKeys = <T extends Object, K extends keyof T>(obj: T, key: K[]): Omit<T, K> =>
 { return {} as any }

Özet

Nesnelerle çalışırken `typeof` ve `keyof` anahtar kelimelerini kullanmalıyız.

Enum yerine `const` ile tanımlanmış nesneler kullanmak, TypeScript deneyimini daha güçlü hale getirir.

Geri