https://github.com/codermungan/learn-typescript
A repo containing my notes and codes I took while learning Typescript.
https://github.com/codermungan/learn-typescript
typescript typescript-learning typescript-learning-begginer
Last synced: 10 months ago
JSON representation
A repo containing my notes and codes I took while learning Typescript.
- Host: GitHub
- URL: https://github.com/codermungan/learn-typescript
- Owner: CoderMungan
- Created: 2023-12-06T21:51:01.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-13T12:58:30.000Z (about 2 years ago)
- Last Synced: 2024-10-12T07:30:49.516Z (about 1 year ago)
- Topics: typescript, typescript-learning, typescript-learning-begginer
- Language: TypeScript
- Homepage:
- Size: 36.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
## Başlangıç
Typescript **Compiler** aşamasında hatalarını gösterir. Compiler aşamasında çalışır.
### Kurulum
```bash
npm install -G typescript
```
şeklinde TypeScript bilgisayarınıza kurulur.
### Type Inference Özelliği
TypeScript eğer ki key’e herhangi bir type ataması yapmadıysanız, typescript keyin ilk value type’ını baz alacaktır. Örn;
```tsx
let codermungan = {
isim : "Mehmet Halil",
soyisim : "MUNGAN",
yas : 30,
};
```
Burada `isim` keyi `string` , `soyisim` keyi `string` , `yas` keyi `number` alacaktır.
### Manuel type verme
Gene yukarıdaki örnekten gidecek olursak objenin içerisinde bulunan keylerinin typelarını ayarlamamız gerekmektedir. Örn;
```tsx
let codermungan: {isim: string, soyisim: string, yas: number} = {
isim : "Mehmet Halil",
soyisim : "MUNGAN",
yas : 30,
};
```
ancak daha okunaklı ve güzel bir syntax ile yazmamız gerekirse `interface` özelliğini yada `type` özelliğini kullanabiliriz. Örn;
```tsx
// Objelerin type'ını oluştururken kullanımı daha yaygındır.
interface Coder {
isim: string,
soyisim: string,
yas: number,
};
// Fonksiyon typelarını oluştururken kullanımı daha yaygındır.
type Coder = {
isim: string,
soyisim: string,
yas: number,
};
let codermungan : Coder = {
isim : "Mehmet Halil",
soyisim : "MUNGAN",
yas : 30,
};
```
### !!! Dikkat
- Objelerde type’lama yaptığınız `key` eğer ki objenizde kullanılmayacaksa hata verecektir. Çünkü `inference` özelliği onun direk type’nı variable olarak tanımladı. Ancak bu durumun da önüne geçebiliriz. Örn;
```tsx
interface Coder {
isim: string,
soyisim: string,
yas?: number,
};
let codermungan: Coder = {
isim: "Mehmet Halil",
soyisim: "MUNGAN",
}
```
şeklinde yazdığımızda `yas` keyi versenizde olur vermeseniz de olur. Bu özelliğe `Optional Property` denmektedir. İsteğe bağlı özellik!
## Ufak Çaplı Trickler
1. İki veya daha fazla type alabilme durumu (**Union Types**):
```tsx
type Role = boolean | number; // Boolean yada Number olabilir.
interface User {
name: string;
password: string;
role?: Role; // role Optional Property Boolen veya Number alabilir.
}
```
2. Variable atama ve eşleştirme (**Literal Types**):
```tsx
type Isim = "Mehmet Halil" | "Mehmet Halil MUNGAN" | "CoderMungan"
interface Coder {
isim: Isim,
soyisim: string,
yas: number,
};
let codermungan : Coder = {
isim : "Mehmet Halil",
soyisim : "MUNGAN",
yas : 30,
};
```
## Generic Types
- Will soon!