Typescript-Notları
Total Page:16
File Type:pdf, Size:1020Kb
Contents TypeScript ...........................................................................................................................................2 Type Annotations ............................................................................................................................4 Primitive Types ...............................................................................................................................5 Arrays .............................................................................................................................................5 Enumerations .................................................................................................................................6 Bit Flag ............................................................................................................................................6 Type Assertions ...............................................................................................................................7 Operators .......................................................................................................................................7 Binary plus operator ....................................................................................................................8 Not Operator ..............................................................................................................................8 And Operatörü ............................................................................................................................9 Or operatörü ...............................................................................................................................9 Functions ........................................................................................................................................9 Optional Parameter ................................................................................................................... 10 Default Parameter ..................................................................................................................... 10 Rest Parameter ......................................................................................................................... 10 Overloads .................................................................................................................................. 11 Specialized Overload Signarutes ................................................................................................ 11 Arrow Functions ........................................................................................................................ 12 Interfaces ...................................................................................................................................... 12 Classes .......................................................................................................................................... 13 Access Modifiers ....................................................................................................................... 14 Properties and Methods ............................................................................................................ 14 Class Heritage ........................................................................................................................... 15 Scope ............................................................................................................................................ 16 EcmaScript 5 Bind Function ....................................................................................................... 17 Type Information .......................................................................................................................... 17 Modules........................................................................................................................................ 19 Internal Modules ....................................................................................................................... 19 External Modules ...................................................................................................................... 20 Learning the basics of typescript ....................................................................................................... 20 03.Object oriented Concepts in TypeScript........................................................................................ 21 Classes .......................................................................................................................................... 21 Inheritance SubClassing ................................................................................................................ 21 Implementing Interfaces ............................................................................................................... 23 Functions and overloads ............................................................................................................... 23 Generics ........................................................................................................................................ 24 04. Other Features of TypeScript ....................................................................................................... 25 Modules........................................................................................................................................ 25 Declaration Merging ..................................................................................................................... 27 Mixins ........................................................................................................................................... 27 TypeScript https://www.apress.com/us/book/9781430267904 kitabından referans alınmıştır. Typescript Microsoft tarafından üretilmiş Apache 2.0 Lisansı altında yayınlanmış açık kaynak kodlu bir dildir. Javascript ile yazılmış kodları daha iyi bir şekilde yönetimini sağlar. Visual Studio tarafından desteklendiği gibi, WebStorm, Eclipse, SublimeText, Intellij ve Ecmacs ve başka diğer geliştirici araçları tarafından desteklenmektedir. Bu kadar yaygın olmasının en büyük nedenlerinden biri de open source linsanslı olmasındandır. Typescript javascriptin süperset’i olarak tanımlanır. Bu da javascript’in tüm özelliklerine ek olarak, kullanışlı özelliklerin eklendiği anlamına gelir. Kendi dilini javascript kodlarına çevirir. Javascript olduğu için hemen hemen her makinede çalışabilir (web browserlarında,web serverlerlarında, javascript api çalıştıran tüm uygulamalarda (örneğin windows 8 de winjs veya firefox OS da Web API) Typescript javascript ilişkilendirmelerine dayanılarak 3 kategoriye ayrılmıştır. İlk iki set javascripti standartlaştıran “Ecma-262 ECMAScript Specification” ile ilişkilidir. Typescript EcmaScript 5 standartlarını temel alır ve ek olarak ECMAScript 6 daki kod organizasyonları için modülleri,class temelli nesne yönelimli yapıyı içerir. Bu yapıyı içeren Typescript 2012 Ekim ayında release olmuştur. 3. Kategori olarak ecmascript standartlarında olmayan generic ve tip notasyonları(annotation) gibi özellikler içerir. Tüm typescript özellikleri geçerli EcmaScript5’ e çevrilebilir. Typescript language feature sources Typescriptin javascript ile yakın ilişkisinden dolayı javascript ile yazılmış sayısız kütüphane ile çalışabilinir. Angular,Backbone,Durandal,jQuery,Knockout,Modernizr,PhoneGap,Prorotype,Raphael,Underscore... Javascript ile karşılaşılan genel problemler aşağıdaki gibidir Prototypal inheritance Equality and type juggling Management of modules Scope Lack of types Prototypal Inheritance Prototype temelli programlama dili bir tür dinamik nesne yönelimli dildir. İlk olarak 1986 da Self adlı bir dilde kullanılmıştır. Prototype temellli programlama zor olduğu için typescript bunu class,module ve interface ekleyerek çözmüştür. Equality and type juggling Listing 1. Type juggling var num = 1; var str = ‘0’; // result is ‘10’ not 1 var strTen = num + str; // result is 20 var result = strTen * 2; Management of Modules Javascriptle çalışırken karşımıza gelen muhtemel problemler aşağıdaki gibi olabilir -web sayfasına scripti eklemeyi unutmak -scriptleri sayfaya yanlış sırada eklemek -kullanılmayacak olan scripti fazladan eklemek Bununla birlikte javascript dosyalarını minimize(minify) etmek için aşağıdaki problemlerle karşılaşabiliriz -scriptleri birleştirirken yanlış sırada birleştirme -tek satırlık yorumları çözümleyemeyen tool’lar -birleştirilmiş ve minimize edilmiş kodları debug etme Scope C gibi dillerde süslü parantezler yeni bir context oluşturmak için kullanılır. Ancak javascriptte süslü parantez içerisinde tanımlanan bir değişkene dışardan erişmek mümkündür. Bunun için javascriptte let keyword’u kullanılır. Var yerine bu keyword ile tanımlanan değişken sadece scope içerinde düzenlenebilir olacaktır. function letTest() { let x = 1; if (true) { let x = 2; // different variable console.log(x); // 2 } console.log(x); // 1 } Typescript scope sorunlarını derlemeden önce uyararak bizlere bildirir. Lack of Types Javascriptin bir diğer sorunu ise tiplerdir. Bir değişkene bir değeri atadıkdan sonra başka tipteki bir değeri atayabilirsiniz. String olarak atanmış bir değişkeni integer’a ,objeye hatta metoda bile atayabilirsiniz. Javascript is valid typescript Birkaç istisna dışında tüm javascript typescriptte geçerlidir. Javascript kodunuzu typescript dosyanın içerisine