Nesne Tipleri & Enum'lar

Nesne Tipleri & Enum'lar: Object type, bir kargo formuna benzer bir sözleşmedir — 'bu pakette mutlaka alıcı adı, takip kodu ve ağırlık olmalı' der; biri eksikse koli kargoya hiç

Object type, bir kargo formuna benzer bir sözleşmedir — 'bu pakette mutlaka alıcı adı, takip kodu ve ağırlık olmalı' der; biri eksikse koli kargoya hiç verilmez. Peki bu kontrolü neden çalışma zamanında (paket fiilen elden çıktığında) değil de daha önce yapalım? Çünkü eksik alanı depoda fark etmek, müşteriye ulaştıktan sonra fark etmekten çok daha ucuzdur — Java'da bu sözleşme zaten bir interface veya class ile zorunluydu, TypeScript aynı garantiyi düz JavaScript nesnelerine sonradan ekliyor. QA'da somut karşılığı şudur: bir test sonucu nesnesinde `duration` alanı unutulduğunda, plain JavaScript'te bu hata raporlama aşamasında 'undefined ms' gibi sessiz bir görüntüyle fark edilmeden geçer; object type kullanan TypeScript kodunda aynı eksiklik, kodu commit etmeden önce derleyici tarafından söylenir.

Micro Lab: TypeScript kod yazma

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Nesne tipi anatomisi

function foo(obj: { name: string; age: number }) — küçük tek kullanımlık yapılar için

timeout?: number — alan bulunmayabilir, undefined ile başlar

readonly id: number — Java'daki final gibi, bir kez atandıktan sonra değiştirilemez

Nesne tipi özelliklerini tip güvenliği sırasına koy:

readonly — değişmez garanti

required alan — her zaman mevcut

optional? — bulunabilir veya undefined

index signature [key: string] — dinamik

type Config = { baseUrl: string; timeout?: number } tanımında timeout alanı belirtilmeden nesne oluşturulursa ne olur?

Geçerlidir — timeout undefined olur (opsiyonel '?' sayesinde)