Değişken, fonksiyon, nesne gibi tanımlayıcıların tiplerini açıkça belirtmek için tip tanımları yapılır. Şu ana kadar zaten nasıl yapıldığını gördünüz ama bu bölümde detaylı olarak bundan bahsedeceğiz.
TypeScript'de tip tanımı yapmak için tanımlayıcıdan sonra : type
syntax'ı kullanılır. Burada type
değeri herhangi bir geçerli tip olabilir.
Bir kez tip tanımlandığında, sadece o tip değerlerle işlem yapılabilir. Eğer farklı tipte bir değer tanımı yapmaya çalışırsanız TypeScript Compiler hata verecektir.
Aşağıda değişken ve sabitlere nasıl tip tanımı yapılacağının örnekleri verilmiştir:
let variableName: type;
let variableName: type = value;
const constantName: type = value;
Tip tanımı değişken ya da sabit isminden hemen sonra :
işareti ile belirtiliyor.
Örneğin number
tip tanımı yapmak istersek:
let counter: number;
Artık counter
değişkenine sadece sayısal değerler atanabilir.
counter = 1;
Örneğin string
tipinde bir değer atamaya kalkarsak compiler hata verecektir.
let counter: number;
counter = 'Hello'; // compile hatası
Hata da şöyle görünecek:
Type '"Hello"' is not assignable to type 'number'.
Hem tip tanımı yapıp hem de başlangıç değeri ile değişken tanımlamak için:
let counter: number = 1;
Diğer primitive tip tanımları ise şöyle:
let name: string = 'John';
let age: number = 25;
let active: boolean = true;
Yukarıdaki örneklerde name
değişkeni sadece string
, age
değişkeni sadece number
ve active
değişkeni sadece boolean
tipinde değer kabul eder.
Bir dizinin tip tanımını yapmak için : type[]
şeklinde, köşeli parantez kullanarak yapabilirsiniz.
let arrayName: type[];
Örneğin string
değerlerinden oluşan bir array
oluştıralım.
let names: string[] = ['John', 'Jane', 'Peter', 'David', 'Mary'];
Obje tipi tanımlamak için objeye değer atamak gibi benzer bir tanım yapıyoruz. Örneğin:
let person: {
name: string;
age: number
};
person = {
name: 'John',
age: 25
}; // geçerli
Yukarıdaki örnekte person
değişkeni bir obje ve 2 özelliği kabul ediyor. Bunlar name
ve age
değerleri, bunlarda string
ve number
tiplerinde olmalı. Aksi durumda compiler hata verecektir.
Aşağıdaki örnekte değişkene bir fonksiyon tanımlanmalı, gönderilen parametre string olmalı ve geriye string dönmeli.
let greeting : (name: string) => string;
yani yukarıdaki tanıma uygun bir atama şöyle olabilirdi:
greeting = function (name: string) {
return `Hi ${name}`;
};
Eğer aşağıdaki gibi bir atama yapsaydık compiler hata verecekti, çünkü bizim tip tanımımıza uymayacaktı.
greeting = function () {
console.log('Hello');
};
Hata:
Type '() => void' is not assignable to type '(name: string) => string'. Type 'void' is not assignable to type 'string'.
- Değişken, fonksiyon, nesne gibi tanımlayıcıların tiplerini açıkça belirtmek için
: type
syntax'ını kullanın.