TypeScript Eğitim: Arayüz, Enum, Dizi Nedir?

⚡ Akıllı Özet

TypeScript güçlü tipli bir üst kümesidir. JavaDüz metin olarak derlenen betik JavaBu betik, sınıflar, arayüzler, numaralandırmalar, modüller ve ad alanları ekler. Bu makale, kurulum, değişkenler, türler, diziler, sınıflar, erişim değiştiriciler, arayüzler, fonksiyonlar, numaralandırmalar, modüller ve ortam bildirimlerini kapsamaktadır.

  • 🧬 Dil İlişkisi: Her geçerli JavaKomut dosyası programı geçerlidir. TypeScriptve derleyici düz metin üretir. JavaHedeflenen her sürüm için komut dosyası.
  • 🔒 Statik Typing: Bir değişken, tanımlandığı sırada verilen türü korur; bu nedenle, bir uyumsuzluk çalışma zamanında değil, derleme zamanında bildirilir.
  • 🧱 Nesne Yönelimli Programlama: Sınıflar, kalıtım ve public, private ve protected değiştiricileri, tarayıcı koduna tanıdık bir yapı kazandırır.
  • 📐 Arabirimler: Bir arayüz bir bağlantıyı tanımlar.tracBir değişkenin, fonksiyonun veya sınıfın karşılaması gereken özellikler ve yöntemler kümesi.
  • 🔢 Numaralandırmalar: Adlandırılmış sabit kümeler, kendi kendini çağıran fonksiyonlara derlenir, çünkü JavaKomut dosyasının yerel bir enum türü yok.
  • ???? Modüller: Dışa aktarma ve içe aktarma işlemleri, bildirimleri bir dosyaya özgü tutar ve küresel ad çakışmalarını önler.
  • 🔌 Ortam Bildirimleri: .d.ts dosyası üçüncü bir tarafı tanımlar. JavaKod tür kontrolünün yeniden yazılmaya gerek kalmadan uygulanabilmesi için betik kütüphanesi.

TypeScript Klavuz

Nedir? TypeScript?

TypeScript bir süper kümesidir JavaSenaryo. TypeScript Nesne yönelimli bir programlama dilidir ve sınıfları, arayüzleri ve daha fazlasını destekler. Açık kaynaklı bir dildir ve tarafından geliştirilmiştir. Microsoft kodu statik olarak derleyen JavaBu betik, tarayıcıda veya Node.js'de kolayca çalıştırılabilir.

ECMAScript için yayımlanan en son özelliklerin tümü TypeScript, ve buna ek olarak TypeScript Arayüzler, ortam bildirimleri ve sınıf kalıtımı gibi nesne yönelimli özelliklere sahiptir ve bu özellikler geliştirme sürecine yardımcı olur.ping aksi takdirde oluşturulması zor olacak büyük bir uygulama JavaSenaryo.

İlişki tek yönlüdür. Her geçerli JavaKomut dosyası zaten geçerli. TypeScriptAncak bunun tersi doğru değildir, çünkü tür açıklamaları yalnızca şurada mevcuttur: TypeScript ve derleme sırasında silinirler.

Neden kullanım TypeScript?

İşte kullanmanın önemli faydaları TypeScript:

  • Büyük ve karmaşık projelerde JavaScriptlerin kodlanması ve bakımı zordur.
  • TypeScript Kod organizasyonuna büyük ölçüde yardımcı olur ve hataların çoğunu çalışma zamanında değil, derleme sırasında ortadan kaldırır.
  • TypeScript JS kütüphanelerini ve API dokümantasyonunu destekler.
  • İsteğe bağlı olarak tip tanımlanabilen bir betik dilidir, bu nedenle tipler kademeli olarak benimsenebilir.
  • TypeScript kod düz metne dönüştürülebilir JavaHerhangi bir tarayıcı hedefi için komut dosyası kodu.
  • Daha iyi kod yapısı ve nesne yönelimli programlama teknikleri sunar.
  • Bu, otomatik tamamlama ve güvenli yeniden düzenleme de dahil olmak üzere, geliştirme süresi boyunca daha iyi araç desteği sağlar.
  • Dekoratörler gibi özelliklerle dili standartın ötesine taşıyabilir.

En büyük pratik kazanım editör desteğidir. Derleyici her değerin şeklini bildiği için, bir editör bir özelliği tüm proje genelinde yeniden adlandırabilir ve artık eşleşmeyen her yeri rapor edebilir.

TypeScript Tarihçe

Gelin, tarihin önemli dönüm noktalarına bir göz atalım. TypeScript:

  • İki yıllık dahili geliştirme sürecinin ardından Microsoft, TypeScript 0.9 sürümü 2013 yılında yayınlandı.
  • TypeScript Jenerik türler için ek destek içeren 1.0 sürümü, Build 2014'te yayınlandı.
  • Temmuz 2014'te yeni bir TypeScript Önceki sürüme göre beş kat daha hızlı olan bir derleyici geldi.
  • Temmuz 2015'te ES6 modülleri, namespace anahtar kelimesi, for…of ve decorator'lar için destek eklendi.
  • Kasım 2016'da eşlenmiş türler, anahtar ve arama türleri ile nesne tabanlı geri kalan ve yayılan işlemler eklendi.
  • 27 Mart 2018'de koşullu tipler ve kesişim tipleriyle geliştirilmiş keyof eklendi.
  • TypeScript Mart 2023'te yayınlanan 5.0 sürümü, dekoratörleri modernize etti ve paket boyutunu küçülttü.
  • TypeScript 6.0 sürümü, önceki sürümlerin üzerine inşa edilmiş nihai sürüm olarak Mart 2026'da yayınlandı. JavaKomut dosyası kod tabanı.
  • TypeScript 7.0 sürümü, derleyiciyi yerel bir Go uygulamasına taşıyor, bu da Microsoft Raporlara göre 6.0'dan yaklaşık on kat daha hızlı.

Kimler kullanır? TypeScript?

TypeScript Artık niş bir tercih değil. En yaygın kullanılan ön uç ve arka uç araçlarının birçoğunun temelini oluşturuyor ve aşağıdaki liste, bir acemi kullanıcının buna en çok nerede rastlayacağını gösteriyor.

  • Açısal: Angular çerçevesi şu dilde yazılmıştır: TypeScriptUygulama kodunun da bu dilde yazılması bekleniyor.
  • React ve Vue projeleri: Her iki ekosistem de resmi gemiyi gönderiyor. TypeScript Şablonlar ve çoğu modern başlangıç ​​paketi bunu varsayılan olarak etkinleştirir.
  • Node.js arka uçları: NestJS gibi sunucu çerçeveleri şu temeller üzerine kurulmuştur: TypeScript sınıflar ve dekoratörler.
  • Editör araçları: Visual Studio Code kendi başına büyük bir TypeScript Bu nedenle dil desteği bu kadar eksiksiz olan bir kod tabanıdır.
  • Büyük ölçekli kurumsal ön uçlar: Birçok katılımcıyla çalışan ekipler, dağıtımdan önce entegrasyon hatalarını yakalamak için bu yöntemi kullanıyor.

İndirme ve Yükleme TypeScript

İşte indirme ve yükleme işlemi adım adım TypeScript:

Adım 1) Nodejs'i indirin ve yükleyin

Nodejs'in resmi sitesine gidin, https://nodejs.org/en/download/Ardından, işletim sisteminiz için Node.js'i indirip kurun. Ayrıntılı talimatlar kılavuzda mevcuttur. Node.js nasıl indirilir ve kurulur?.

Adım 2) Nodejs ve npm sürümünü kontrol edin

Nodejs ve npm'nin kurulu olup olmadığını kontrol etmek için komut isteminde sürümlerini kontrol edin.

D:\typeproject>node --version
v22.14.0

D:\typeproject>npm --version
10.9.2

Node LTS'nin mevcut tüm sürümleri çalışır. TypeScript Derleyiciyi çalıştırmak için yalnızca desteklenen bir Node sürümüne ihtiyaç duyar.

) 3 Adım TypeScript Montaj

Aşağıdaki komutta gösterildiği gibi, proje dizininizi (typeproject\) oluşturun ve `npm init` komutunu çalıştırın:

npm init

Adım 4) Kurulumu Başlatın

Bu işlem, projemizin bağımlılıklarını saklayacak olan package.json dosyasını oluşturur.

Bittiğinde, yükleyin TypeScript aşağıdaki gibidir:

npm -g install typescript

Yukarıdaki komut kurulumla ilgilenecektir TypeScript. Npm install'a “-g” eklemek kurulumu yapacaktır TypeScript Küresel olarak. -g kullanmanın avantajı, şunları kullanabilmenizdir: TypeScript tsc Bu komut, global olarak yüklendiği için herhangi bir dizinden çalıştırılabilir. Yüklemek istemiyorsanız... TypeScript Küresel olarak, aşağıdaki komutu kullanın:

npm install --save-dev typescript

Proje dizininizde bir `src\` klasörü oluşturun ve `src\` klasörünün içine aşağıdaki dosyayı oluşturun. TypeScript test.ts dosyasını açın ve kodunuzu yazın.

Örnek: test.ts

function add(x:number, y:number) {
	return x+y;
}

let sum = add(5,10);
console.log(sum);

Derlemek TypeScript kodlamak Javascript

Yukarıdaki kodu derlemek için aşağıdaki komutu kullanın.

If TypeScript Aşağıdaki komutu kullanarak global olarak yükleyin:

tsc test.ts

If TypeScript Eğer projenize yerel olarak yüklenmişse, yolunu kullanmanız gerekir. TypeScript Gösterildiği gibi node_modules'tan veya npx aracılığıyla çalıştırabilirsiniz:

node_modules\typescript\bin\tsc test.ts

OR

npx tsc test.ts

Yukarıdaki komut, derlenmiş kodu içeren bir test.js dosyası oluşturacaktır. JavaSenaryo.

Örnek: test.js

function add(x, y) {
    return x + y;
}
var sum = add(5, 10);
console.log(sum);

Gerçekleştirmek Javascript Nodejs'i kullanma

Şimdi test.js dosyasını Nodejs'te aşağıdaki gibi çalıştıracağız:

D:\typeproject\src>node test.js
15

`console.log`'a iletilen değer, `test.js` çalıştırıldığında görüntülenir.

Gerçekleştirmek JavaTarayıcıdaki Komut Dosyası

Örnek:

<html>
<head></head>
<body>
<script type="text/javascript" src="test.js"></script>
</body>
</html>

Gerçekleştirmek Javascript Nodejs'i kullanma

Derlemek TypeScript kodlamak Javascript EcmaScript sürümünü kullanma

TypeScript Yayınlanan tüm ECMAScript özelliklerini destekler ve geliştiriciler kodlama yaparken bunları kullanabilirler. Ancak tüm yeni özellikler eski tarayıcılarda desteklenmediğinden, daha eski bir ECMAScript sürümüne derleme yapmanız gerekebilir. TypeScript Tam olarak bunu yapan derleyici seçenekleri sunar.

Örnek: test.ts

var addnumbers = (a, b) => {
    return a+b;
}

addnumbers(10, 20);

İstediğiniz ES sürümüne derlemek için komutunuzdaki target veya t seçeneğini aşağıdaki gibi kullanabilirsiniz:

tsc --target ES6  test.ts

OR

tsc -t ES6 test.ts

Varsayılan olarak, klasik derleyici için hedef ES3'tür. Bunu değiştirmek isterseniz, yukarıdaki komutu kullanabilirsiniz.

Şu an için hedef olarak ES6'yı kullanacağız:

tsc --target ES6  test.ts

test.ts'den test.js'ye

var addnumbers = (a, b) => {
    return a+b;
}

addnumbers(10, 20);

Kod olduğu gibi kalıyor çünkü kullandığınız ok fonksiyonu bir ES6 özelliğidir ve ES6'ya derlendiğinde değişmez.

Varsayılan olarak hedef ES3'tür, bu nedenle hedef belirtmezseniz test.js şu şekilde görünür:

var addnumbers = function (a, b) {
    return a + b;
};
addnumbers(10, 20);

Burada, kalın ok normal bir anonim fonksiyona dönüştürülüyor.

💡 İpucu: Her seferinde komut satırından seçenekleri geçirmek yerine, şunu çalıştırın: tsc --init tsconfig.json dosyasını oluşturmak için derleyici, bu dosyadan tüm proje için hedef, çıkış dizini ve katı ayarları okur.

içindeki değişkenler TypeScript

Değişkenler değerleri depolamak için kullanılır ve değer bir dize, sayı, Boolean veya bir ifade olabilir. Değişkenlere gelince TypeScript, onlar benzer JavaSenaryoO halde, değişkenlere değer atamayı ve bunları tanımlamayı öğrenelim. TypeScript.

Değişkenler tanımlanmadan kodda kullanılamaz. Bir değişkeni tanımlamak için şunu kullanabilirsiniz:

var anahtar kelime,

izin Anahtar kelime

const Anahtar kelime

Değişkenlerle çalışma TypeScript benzer JavaKomut dosyası ve bu komut dosyasına aşina olan kullanıcılar. JavaBetik bunu çok kolay bulacaktır. Modern kodda, izin hem de const tercih edilir varÇünkü blok kapsamları, bir tür hatayı tamamen önler.

Var kullanarak değişkenleri bildirmek

Sözdizimi:

var firstname = "Roy";

Birkaçına göz atalım. TypeScript `var` anahtar kelimesinin çalışma şeklini ve bu anahtar kelime kullanılarak tanımlanan değişkenlerin kapsamını anlamak için örnekler. var Anahtar kelime.

Örnek 1:

var k = 1; // variable k will have a global scope

function test() {
    var c = 1; // variable c is local and accessible only inside function test
    return k++;
}

test(); // output as 1
test(); // output as 2
alert(c); // will throw error, Uncaught ReferenceError: c is not defined

Örnek 2:

var t = 0; // variable t is declared in global scope
function test() {
    var t = 10; // t is redeclared inside the function, so changes stay local
    return t;
}
test(); // will return 10
console.log(t); // will console 0

Örnek 3:

var i = 0;
function test() {
    if (i > 0) {
      var t = 1;
    }
    return t;
}

test(); // returns undefined. The if block did not run, yet t is still declared
        // because var declarations are hoisted to the whole function.
i++;    // value of i is incremented
test(); // since i > 0 the if block runs and the value returned is 1

Let kullanarak değişkenleri bildirmek

MKS TypeScript let'in sözdizimi aşağıda verilmiştir:

Sözdizimi:

let name = "Roy";

Çalışması izin değişken neredeyse aynıdır varAncak, aşağıdaki örnekte gösterildiği gibi, önemli bir fark vardır.

Örnek:

let i = 1;
function test() {
    if (i > 0) {
	  let t = 1;
    }
    return t;
}

test(); // throws an error: Cannot find name 't'

Yukarıdaki TypeScript Örnek bir hata veriyor, ancak aynı kod şu şekilde çalışırdı: var Anahtar kelime. Değişkenler şu şekilde tanımlanır: izin t değişkenleri yalnızca tanımlandıkları blok içinde kullanılabilirler. Bu örnekte, t değişkeni yalnızca if bloğu içinde mevcuttur, fonksiyonun tamamında değil.

Aynı durum herhangi bir fonksiyon, for döngüsü, while döngüsü veya switch bloğu içinde de geçerlidir. `let` değişkeni yalnızca o blok içinde kullanılabilir ve dışarıda referans verilmesi hata verir. `var` ve `let` arasındaki temel fark budur.

Değişkenleri const kullanarak bildirmek

`const` ifadesi sabit değişkenler anlamına gelir. `let` değişkenlerine benzerler, ancak bir değer atandıktan sonra değiştirilemezler. Bu nedenle, `const` bildirimi aynı satırda başlatılmalıdır.

Sözdizimi:

const name = "Roy";

Örnek:

const age = "25";
age = "30"; // error: Cannot assign to 'age' because it is a constant

const total; // error: 'const' declarations must be initialized

Dolayısıyla, atanan değerin yeniden atanmayacağını bildiğiniz her durumda `const` kullanın. `const`'un, işaret ettiği nesnenin değiştirilmesini değil, bağlamanın yeniden atanmasını engellediğini unutmayın.

Türler TypeScript

TypeScript güçlü tipli bir dildir, oysa JavaKomut dosyası böyle değil. Değeri bir dize olarak tanımlanan bir değişken, herhangi bir sorun olmadan sayıya dönüştürülebilir. JavaSenaryo. Aynı durum burada hoş görülmez. TypeScript. içinde TypeScriptBir değişkenin türü başlangıçta tanımlanır ve yürütme boyunca bu türü korumalıdır. Herhangi bir değişiklik, derleme sırasında derleme zamanı hatasına yol açar. JavaSenaryo.

Aşağıda temel türler verilmiştir:

Menşei Kabul eder Örnek Beyanname
numara Tam sayılar, ondalık sayılar ve kesirler a: sayı = 10 olsun;
dizi Yalnızca metin değerleri s: string = "merhaba";
boole yalnızca doğru veya yanlış b değişkenine boolean değeri true olsun;
herhangi Herhangi bir değer, kontrol uygulanmaz. x: herhangi bir = 123 olsun;
geçersiz Geri dönüş değerinin olmaması fonksiyon f(): void {}

Numara

Yalnızca tamsayıları, ondalık sayıları, kesirli sayıları ve benzer sayısal değerleri kabul eder.

Sözdizimi:

let a :number = 10;
let marks :number = 150;
let price :number = 10.2;

İşte sayı türlerinde kullanılabilecek bazı önemli yöntemler:

tamir edildi() – Bu işlem, sayıyı bir metin dizisine dönüştürecek ve yönteme verilen ondalık basamak sayısını koruyacaktır.

toString () – Bu yöntem sayıyı bir metin dizisine dönüştürecektir.

değeri() – bu yöntem sayının ilkel değerini geri verecektir.

toPrecision() – bu yöntem sayıyı belirli bir uzunluğa biçimlendirecektir.

Örnek: tüm sayı yöntemleriyle

let _num :number = 10.345;
_num.toFixed(2);      // "10.35"
_num.valueOf();      // 10.345
_num.toString();     // "10.345"
_num.toPrecision(2); // "10"

dizi

Dize: yalnızca dize değerleri.

Sözdizimi:

let str :string = "hello world";

İşte dize türleri üzerinde kullanılabilecek bazı önemli yöntemler:

  • bölmek() – bu yöntem, dizeyi bir diziye bölecektir.
  • karakter() – bu yöntem, verilen dizindeki karakteri verecektir.
  • indeksi() – bu yöntem, kendisine verilen değerin ilk geçtiği yerin konumunu verecektir.
  • değiştirmek() – Bu yöntem 2 dize alır. Dizede ilk değeri arar ve eğer varsa, onu ikinci değerle değiştirir ve yeni bir dize döndürür.
  • süs() – bu yöntem, dizenin her iki tarafındaki boşlukları kaldıracaktır.
  • substr() – bu yöntem, verilen başlangıç ​​konumuna ve uzunluğa bağlı olarak dizenin bir bölümünü verecektir.
  • alt dize() – bu yöntem, başlangıç ​​ve bitiş konumlarına bağlı olarak dizenin bir bölümünü verir. Bitiş konumundaki karakter hariç tutulur.
  • toBüyük Harf() – dizeyi büyük harfe dönüştürür.
  • toKüçük Harf() – dizeyi küçük harfe dönüştürür.

Örnek:

let _str:string = "Typescript";

_str.charAt(1);                // y
_str.split("");                // ["T","y","p","e","s","c","r","i","p","t"]
_str.indexOf("s");             // 4, gives -1 if the value does not exist
_str.replace("Type", "Coffee"); // "Coffeescript"
_str.trim();                    // "Typescript"
_str.substr(4, _str.length);   // "script"
_str.substring(4, 10);         // "script"
_str.toUpperCase();             // "TYPESCRIPT"
_str.toLowerCase();             // "typescript"

Boole

Boolean türü yalnızca true ve false mantıksal değerlerini kabul eder. Düz metinden farklı olarak JavaBu betikte, 0 ve 1 rakamları sayı türünde oldukları için kabul edilmez.

Sözdizimi:

let status :boolean = true;
let isDone :boolean = false;

let bflag :boolean = 1;
// error: Type 'number' is not assignable to type 'boolean'

Farketmez

Sözdizimi:

let a :any = 123
a = "hello world"; // changing type will not give any error.

Değişkenler, aşağıdaki yöntem kullanılarak tanımlanır: herhangi `type` bir dize, sayı, dizi, boolean veya void tutabilir. TypeScript Derleme sırasında herhangi bir hata vermeyecektir; bu, değişkenlere benzer bir durumdur. JavaKomut dosyası. Herhangi bir türü yalnızca o değişkene atanacak değerin türünden emin olmadığınız durumlarda kullanın, çünkü bu, o değer üzerindeki tüm kontrolleri devre dışı bırakır.

Geçersiz

Void tipi çoğunlukla hiçbir şey döndürmeyen fonksiyonların dönüş tipi olarak kullanılır.

Sözdizimi:

function testfunc():void{
 //code here
}

TypeScript Dizi

An Dizi in TypeScript Birden fazla değeri saklayabileceğiniz bir veri türü olan dizilerde, dizi işlemleri için değerleri nasıl tanımlayacağımızı ve atayacağımızı öğrenelim. TypeScript.

Dan beri TypeScript Güçlü tipli bir dil olduğundan, bir dizideki değerlerin veri türünü belirtmeniz gerekir. Aksi takdirde, herhangi bir türdeymiş gibi işlem görür.

Bir Diziyi Bildirin ve Başlatın

Sözdizimi:

let nameofthearray : Array<typehere>

Örnek E-posta

let months: Array<string> = ["Jan", "Feb", "March", "April", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"]; // array with all string values

let years: Array<number> = [2015, 2016, 2017, 2018, 2019]; // array with all numbers

let month_year: Array<string | number> = ["Jan", 2015, "Feb", 2016]; // mixed

let alltypes: Array<any> = [true, false, "Harry", 2000, { "a": "50", "b": "20" }]; // any type

Bir Dizideki öğelere erişmenin farklı Yolları

Bir dizideki elemanları almak için, değerler 0. indeksten başlayarak dizinin uzunluğunun bir eksiğine kadar olan değerlerdir.

let years: Array<number> = [2016, 2017, 2018, 2019];
years[0]; // output will be 2016
years[1]; // output will be 2017
years[2]; // output will be 2018
years[3]; // output will be 2019

Bir dizideki elemanları aşağıdaki yöntemle de elde edebilirsiniz. TypeScript için döngü, Aşağıda gösterildiği gibi.

kullanma TypeScript döngü için

let years: Array<number> = [2016, 2017, 2018, 2019];
for (let i = 0; i < years.length; i++) {
     console.log(years[i]);
}

Çıktı:

2016
2017
2018
2019

⚠️Uyarı: Döngü koşulu şu olmalıdır: i < years.length. yazı i <= years.length Bir ek yineleme daha çalıştırır ve yazdırır. undefinedÇünkü son geçerli indeks her zaman uzunluğun bir eksiğidir.

For-in döngüsünü kullanma

let years: Array<number> = [2016, 2017, 2018, 2019];
for (let i in years) {
     console.log(years[i]);
}

Çıktı:

2016
2017
2018
2019

For-of döngüsünü kullanma

let years: Array<number> = [2016, 2017, 2018, 2019];
for (let i of years) {
     console.log(i);
}

Çıktı:

2016
2017
2018
2019

forEach döngüsünü kullanarak

let years: Array<number> = [2016, 2017, 2018, 2019];
years.forEach(function(yrs, i) {
  console.log(yrs);
});

Çıktı:

2016
2017
2018
2019

TypeScript Dizi Yöntemleri

MKS TypeScript Dizi nesnesi, geliştiricilerin dizileri kolay ve verimli bir şekilde yönetmelerine yardımcı olan birçok özelliğe ve metoda sahiptir. Bir özelliğin değerini arrayname.property belirterek, bir metodun çıktısını ise arrayname.method() belirterek alabilirsiniz.

Üye Amaç Geri dönüşler
uzunluk Dizideki eleman sayısı numara
tersine çevirmek() ReverseYerindeki öğelerin sırası Aynı dizi
çeşit() Öğeleri yerlerine sıralar. Aynı dizi
pop() Son öğeyi kaldırır. Kaldırılan ürün
vardiya() İlk öğeyi kaldırır. Kaldırılan ürün
it() Son öğe olarak bir değer ekler. Yeni uzunluk
birleştirme() İki diziyi birleştirir Yeni bir dizi

Uzunluk özelliği örneği

let months: Array<string> = ["Jan", "Feb", "March", "April", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"];

console.log(months.length);  // 12

Ters yöntem örneği

console.log(months.reverse());
// ["Dec","Nov","Oct","Sept","Aug","July","June","May","April","March","Feb","Jan"]

Sıralama yöntemi örneği

console.log(months.sort());
// ["April","Aug","Dec","Feb","Jan","July","June","March","May","Nov","Oct","Sept"]

Pop yöntemine örnek

console.log(months.pop()); // Dec

Shift yöntemi örneği

console.log(months.shift()); // Jan

Push yöntemi örneği

let years: Array<number> = [2015, 2016, 2017, 2018, 2019];
console.log(years.push(2020)); // 6, the new length
years.forEach(function(yrs, i) {
  console.log(yrs); // 2015, 2016, 2017, 2018, 2019, 2020
});

Concat yöntemi için örnek

let array1: Array<number> = [10, 20, 30];
let array2: Array<number> = [100, 200, 300];
console.log(array1.concat(array2)); // [10, 20, 30, 100, 200, 300]

Sınıfta TypeScript

TypeScript bir süper kümesidir JavaSenaryo, yani mümkün olan her şey. JavaKomut dosyası da mümkündür TypeScript.Class özelliği ES6'dan itibaren eklenmiştir. Daha önce JavaKod tekrarını sağlamak için prototip metotlara sahip bir fonksiyon kullanılarak, sınıf benzeri işlevsellik elde edildi. Sınıf kullanımıyla, kodunuz gibi dillere yaklaşabilir. Java, C# ve PythonKodun kolayca yeniden kullanılabildiği yerlerde.

Bir Sınıfı Tanımlamak TypeScript

İşte temel sınıf sözdizimi: TypeScript:

class nameofclass {
     //define your properties here

    constructor() {
     // initialize your properties here
    }

   //define methods for class
}

Örnek: Class'ta çalışan bir örnek

class Students {
    age : number;
    name : string;
    roll_no : number;

    constructor(age: number, name:string, roll_no: number) {
        this.age = age;
        this.name = name;
        this.roll_no = roll_no;
    }

    getRollNo(): number {
        return this.roll_no;
    }

    getName() : string {
        return this.name;
    }

    getAge() : number {
        return this.age;
    }
}

Yukarıdaki örnekte, Öğrenciler adında bir sınıfınız var. Bu sınıfın age, name ve roll_no özellikleri bulunuyor.

Yapıcı bir TypeScript Sınıf

Yukarıda tanımlanan Students sınıfının yapıcı metodu aşağıdaki gibidir:

constructor(age: number, name:string, roll_no: number) {
        this.age = age;
        this.name = name;
        this.roll_no = roll_no;
    }

Yapıcı metot, age, name ve roll_no parametrelerini alır. Yapıcı metot, sınıf örneği oluşturulduğunda özellikleri başlatmayı üstlenir. Özelliklere erişim, aşağıdaki yöntem kullanılarak sağlanır: Re-Tweet Örneğin, yaşa erişmek için `this.age` ve öğrenci numarasına erişmek için `this.roll_no` gibi anahtar kelimeler kullanabilirsiniz. Ayrıca, aşağıda gösterildiği gibi varsayılan bir kurucuya da sahip olabilirsiniz:

constructor () {}

Bir içindeki yöntemler TypeScript Sınıf

Öğrenciler sınıfında, örneğin getRollNo(), getName() ve getAge() gibi, roll_no, name ve age özelliklerinin değerlerini döndüren metotlar tanımlanmıştır.

getRollNo(): number {
        return this.roll_no;
}

getName() : string {
	return this.name;
}

getAge() : number {
	return this.age;
}

Bir Sınıfın Örneğini Oluşturma TypeScript

In TypeScriptBir sınıfın örneğini oluşturmak için `new` operatörünü kullanırsınız. `new` ile bir örnek oluşturduğunuzda, aşağıdaki gibi sınıfın özelliklerine ve yöntemlerine erişebilen bir nesne elde edersiniz:

let student_details = new Students(15, "Harry John", 33);
student_details.getAge();  // 15
student_details.getName(); // Harry John

Derleme TypeScript Sınıfı JavaSenaryo

Aşağıda gösterildiği gibi tsc komutunu kullanarak derleme yapabilirsiniz. JavaSenaryo.

Command: tsc  Students.ts

Çıktısı JavaDerleme sırasında komut dosyası kodu aşağıdaki gibidir:

var Students = /** @class */ (function () {
    function Students(age, name, roll_no) {
        this.age = age;
        this.name = name;
        this.roll_no = roll_no;
    }
    Students.prototype.getRollNo = function () {
        return this.roll_no;
    };
    Students.prototype.getName = function () {
        return this.name;
    };
    Students.prototype.getAge = function () {
        return this.age;
    };
    return Students;
}());

In JavaBu betikte, sınıf kendi kendini çağıran bir fonksiyona dönüştürülür.

Sınıf Mirası

Sınıflar kullanılarak miras alınabilir uzanır anahtar kelime TypeScript.

Sınıf Mirası Söz Dizimi:

class A {
     //define your properties here

    constructor() {
     // initialize your properties here
    }

   //define methods for class

}

class B extends A {
 //define your properties here

    constructor() {
     // initialize your properties here
    }

   //define methods for class

}

B sınıfı paylaşabilecek a sınıfı yöntemler ve özellikler.

İşte kalıtım kullanan bir sınıfın çalışan bir örneği:

class Person {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    getName(): string {
        return this.name;
    }

    getAge(): number {
        return this.age;
    }
}

class Student extends Person {
    tmarks: number;
    getMarks(): number {
        return this.tmarks;
    }

    setMarks(tmarks) {
        this.tmarks = tmarks;
    }
}

let _std1 = new Student('Sheena', 24);
_std1.getAge();      // output is 24
_std1.setMarks(500);
_std1.getMarks();    // output is 500

İki sınıfınız var: Person ve Student. Student, Person sınıfından miras alıyor ve Student'tan oluşturulan nesne, kendi metotlarına ve özelliklerine olduğu kadar miras aldığı sınıfın metotlarına ve özelliklerine de erişebiliyor.

Şimdi yukarıdaki sınıfa bazı değişiklikler ekleyelim.

Örnek:

class Person {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    getName(): string {
        return this.name;
    }

    getAge(): number {
        return this.age;
    }
}

class Student extends Person {
    tmarks: number;
    constructor(name: string, age: number, tmarks: number) {
        super(name, age);
        this.tmarks = tmarks; // the derived property must be assigned too
    }
    getMarks(): number {
        return this.tmarks;
    }

    setMarks(tmarks) {
        this.tmarks = tmarks;
    }
}

let _std1 = new Student('Sheena', 24, 500);
_std1.getAge();   // output is 24
_std1.getMarks(); // output is 500

Önceki örneğe kıyasla değişiklik, Student sınıfında tanımlanan bir kurucu metottur. Bu kurucu metot, temel sınıfla aynı parametreleri alır ve bunlara ek olarak kendi ek parametrelerini de alır.

In TypeScript Temel sınıfın tüm parametreleriyle `super`'ı çağırmanız gerekiyor. Bu, kurucu fonksiyonun içindeki ilk ifade olmalıdır, çünkü `super` genişletilmiş sınıfın kurucusunu çalıştırır. Türetilmiş sınıf tarafından tanımlanan herhangi bir özellik, örneğin `tmarks`, daha sonra açıkça atanmalıdır, aksi takdirde `getMarks` tanımsız değer döndürür.

Erişim Değiştiricileri TypeScript

TypeScript Metotlarınız ve özelliklerinizde public, private ve protected erişim değiştiricilerini destekler. Varsayılan olarak, erişim değiştirici verilmezse, metot veya özellik public olarak kabul edilir ve sınıfın nesnesinden kolayca erişilebilir.

Özel erişim belirleyicileri söz konusu olduğunda, üyeler sınıfın nesnesinden erişilemez ve yalnızca sınıf içinde kullanılmak üzere tasarlanmıştır. Miras alınan bir sınıfa erişilemezler.

Korumalı erişim değiştiriciler söz konusu olduğunda, üyeler sınıf içinde ve miras alınan sınıfta kullanılmak üzere tasarlanmıştır ve sınıfın nesnesinden erişilemezler.

Örnek:

class Person {
    protected name: string;
    protected age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    private getName(): string {
        return this.name;
    }

    getDetails(): string {
        return "Name is " + this.getName();
    }
}

class Student extends Person {
    tmarks: number;
    constructor(name: string, age: number, tmarks: number) {
        super(name, age);
        this.tmarks = tmarks;
    }
    getMarks(): number {
        return this.tmarks;
    }

    getFullName(): string {
        return this.name;
    }

    setMarks(tmarks) {
        this.tmarks = tmarks;
    }
}

let _std1 = new Student('Sheena', 24, 500);
_std1.getMarks();    // output is 500
_std1.getFullName(); // output is Sheena
_std1.getDetails();  // output is Name is Sheena
Niteleyici Aynı sınıf Türetilmiş sınıf Sınıfın Nesnesi
halka açık Evet Evet Evet
korumalı Evet Evet Yok hayır
özel Evet Yok hayır Yok hayır

Arayüz TypeScript

temel özelliklerinden biri TypeScript Arayüzler, onu kullanan varlık tarafından uygulanması gereken bir dizi kuraldır. Varlık bir sınıf, fonksiyon veya değişken olabilir. Bir arayüz, özellikler ve metotlardan oluşabilir. Bir özelliği veya metodu "?" sözdizimiyle isteğe bağlı olarak işaretleyebilirsiniz. Arayüz, onu uygulayan herhangi bir fonksiyon, değişken veya sınıf için güçlü bir tür kontrolü ekler.

Bir Arayüzün Söz Dizimi TypeScript

interface Dimension {
    width: string;
    height: string;
}

"Dimension" adında bir arayüz tanımladınız ve bu arayüzün hem "width" hem de "height" özellikleri string türünde.

Bu arayüz artık bir değişken, bir fonksiyon veya bir sınıf tarafından uygulanabilir. İşte Dimension arayüzünü uygulayan bir değişken örneği.

Örnek:

interface Dimension {
    width: string;
    height: string;
}

let _imagedim: Dimension = {
    width: "100px",
    height: "200px"
};

Dimension arayüzünün imzasında genişlik ve yükseklik bulunur ve her ikisi de zorunludur. Herhangi bir özellik eksikse veya bir tür değiştirilirse, kod derlenirken derleme zamanı hatası verir. JavaSenaryo.

Yukarıdaki kod derlendiğinde JavaSenaryo şu şekildedir:

var _imagedim = {
    width: "100px",
    height: "200px"
};

Şimdi bir arayüzün bir fonksiyonla nasıl kullanılacağını görelim.

Bir fonksiyonun dönüş tipi olarak arayüz kullanılması

interface Dimension {
    width: string;
    height: string;
}

function getDimension() : Dimension {
    let width = "300px";
    let height = "250px";
    return {
        width: width,
        height: height
    }
}

Yukarıdaki örnekte, Dimension arayüzü getDimension() fonksiyonunun dönüş tipi olarak kullanılmıştır. Dönüş değeri, arayüzde tanımlanan özellikler ve tiplerle eşleşmelidir.

derlenmiş JavaKod aşağıdaki gibi olacaktır:

function getDimension() {
    var width = "300px";
    var height = "250px";
    return {
        width: width,
        height: height
    };
}

Derleme sırasında, dönüş türü arayüzle eşleşmezse hata oluşacaktır.

Arayüz, bir fonksiyon parametresi olarak

interface Dimension {
    width: string;
    height: string;
}

function getDimension(dim: Dimension) : string {
    let finaldim  = dim.width + "-" + dim.height;
    return finaldim;
}

getDimension({width:"300px", height:"250px"}); // "300px-250px"

Yukarıdaki örnekte, Dimension arayüzünü getDimension() fonksiyonuna parametre olarak kullandınız. Fonksiyonu çağırdığınızda, ona iletilen parametre, arayüz tarafından tanımlanan kurallara uymalıdır.

derlenmiş JavaKod aşağıdaki gibi olacaktır:

function getDimension(dim) {
    var finaldim = dim.width + "-" + dim.height;
    return finaldim;
}
getDimension({ width: "300px", height: "250px" });

Bir arayüzü uygulayan sınıf

Bir sınıfla birlikte bir arayüz kullanmak için, `interface` anahtar kelimesini kullanmanız gerekir. uygular.

Bir arayüzü uygulayan bir sınıf için sözdizimi:

class NameofClass implements InterfaceName {
}

Aşağıdaki örnek, bir arayüzün bir sınıfla nasıl çalıştığını göstermektedir.

interface Dimension {
    width : string,
    height: string,
    getWidth(): string;
}

class Shapes implements Dimension {
    width: string;
    height: string;
    constructor (width:string, height:string) {
        this.width = width;
        this.height = height;
    }
    getWidth() {
        return this.width;
    }
}

Yukarıdaki örnekte, hem width hem de height özelliklerine sahip, her ikisi de string türünde olan Dimension arayüzünü ve string döndüren getWidth() adlı bir metodu tanımladınız.

derlenmiş JavaKod aşağıdaki gibi olacaktır:

var Shapes = /** @class */ (function () {
    function Shapes(width, height) {
        this.width = width;
        this.height = height;
    }
    Shapes.prototype.getWidth = function () {
        return this.width;
    };
    return Shapes;
}());

İçindeki işlevler TypeScript

Fonksiyonlar, bir görevi yerine getirmek için uygulanan talimatlar kümesidir. JavaBetiklerde kodun büyük kısmı fonksiyonlar şeklinde yazılır ve bu fonksiyonlar önemli bir rol oynar. TypeScript Sınıflar, arayüzler, modüller ve ad alanları mevcut olsa da, fonksiyonlar hala önemli bir rol oynamaktadır. Bir fonksiyonun bir sınıf içindeki diğer bir sınıf içindeki bir fonksiyonla arasındaki fark şudur: JavaSenaryo ve TypeScript Parametre ve dönüş tipleri, bir ile birlikte kullanılabilir mi? TypeScript fonksiyonu.

JavaKomut dosyası işlevi:

function add (a1, b1) {
   return a1+b1;
}

TypeScript işlevi:

function  add(a1 : number, b1: number) : number {
    return a1 + b1;
}

Yukarıdaki fonksiyonda, fonksiyonun adı "add", parametreler ise şunlardır: a1 hem de b1Hem değer hem de dönüş değeri sayı türündedir ve dönüş değeri de sayıdır. Fonksiyona bir dize (string) geçirirseniz, derleme sırasında derleme hatası verecektir. JavaSenaryo.

Fonksiyona çağrı yapılıyor: ekle

let x = add(5, 10);   // will return 15
let b = add(5);       // error TS2554: Expected 2 arguments, but got 1
let c = add(3,4,5);   // error TS2554: Expected 2 arguments, but got 3
let t = add("Harry", "John");
// error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'

Parametreler a1 hem de b1 Parametre türleri ve dönüş türü zorunludur ve belirtilmemesi durumunda hataya neden olur. Parametre türleri ve dönüş türü de aynı derecede önemlidir ve tanımlandıktan sonra değiştirilemez.

Bir işleve ilişkin isteğe bağlı parametreler

In JavaKomut dosyasında, fonksiyonlara verilen tüm parametreler isteğe bağlıdır ve geçirilmedikleri takdirde tanımsız kabul edilirler. Ancak bu durum diğer komut dosyalarında geçerli değildir. TypeScriptParametreleri tanımladıktan sonra bunları sağlamanız gerekir. Bir parametrenin isteğe bağlı olmasını istiyorsanız, aşağıdaki gibi parametre adının sonuna bir soru işareti ekleyin:

function getName(firstname: string, lastname?: string): string {
    return firstname + lastname;
}

let a = getName("John");              // returns Johnundefined
let b = getName("John", "Harry");     // returns JohnHarry
let c = getName("John", "H", "Harry"); // error TS2554: Expected 1-2 arguments, but got 3

Lütfen isteğe bağlı parametrelerin en son tanımlanması gerektiğini unutmayın. İlk parametreyi isteğe bağlı, ikincisini ise zorunlu olarak tanımlayamazsınız, çünkü derleyici hangi değerin verildiğini bilemez.

Paramlara Varsayılan Değerler Atama

Aşağıda gösterildiği gibi parametrelere varsayılan değerler atayabilirsiniz:

function getName(firstname: string, lastname = "Harry"): string {
    return firstname + lastname;
}

let a = getName("John");      // will return JohnHarry
let b = getName("John", "H"); // will return JohnH

İsteğe bağlı parametrelere benzer şekilde, varsayılan olarak başlatılan parametreler de parametre listesinin sonunda tutulmalıdır.

Dinlenme Parametreleri

Nasıl olduğunu gördün TypeScript Zorunlu parametreleri, isteğe bağlı parametreleri ve varsayılan değer parametrelerini ele alır. Şimdi de geri kalan parametrelere bakalım. Geri kalan parametreler, üç farklı yöntem kullanılarak birlikte tanımlanan bir grup isteğe bağlı parametredir. noktalar (…) Ardından, bir dizi olan parametrenin adı gelir.

Dinlenme parametrelerinin sözdizimi:

function testFunc(a: string, ...arr: string[]) :string {
    return a + arr.join("");
}

Yukarıda gösterildiği gibi, "rest" parametresi üç nokta ile başlayan bir dizidir. Bu dizi, fonksiyona iletilen kalan tüm argümanları içerecektir.

Örnek:

let a = testFunc("Monday", "Tuesday", "Wednesday", "Thursday");
// output is MondayTuesdayWednesdayThursday

Ok İşlevleri

Ok işlevi, ES6'da yayımlanan önemli özelliklerden biridir ve şu sürümlerde mevcuttur: TypeScript Aynı şekilde. Söz diziminde kalın bir ok işareti var, ismi de buradan geliyor.

Ok işlevi Sözdizimi:

var nameoffunction = (params) => {
 // code here
}

Ok fonksiyonunun kullanım amacı nedir?

Ok fonksiyonunun kullanım alanını anlamak için bir örneğe bakalım.

Örnek:

var ScoreCard = function () {
    this.score = 0;

    this.getScore = function () {
        setTimeout(function () {
            console.log(this.score);    // gives undefined
        }, 1000);
    }
}

var a = new ScoreCard();
a.getScore();

Bir `score` özelliğine sahip ve bu özelliği 0 olarak başlatmış bir fonksiyon ve `getScore` adında bir metot oluşturdunuz. Bu metot, `setTimeout` kullanarak bir saniye sonra `this.score` değerini yazdırıyor. `this.score` tanımlanmış ve başlatılmış olmasına rağmen, yazdırılan değer tanımsız. Sorun şurada yatıyor: Re-Tweet Anahtar kelime. setTimeout içindeki fonksiyonun kendi this'i var ve score orada tanımlanmadığı için sonuç tanımsız.

Aynı işlem, aşağıda gösterildiği gibi bir ok fonksiyonu kullanılarak da gerçekleştirilebilir:

var ScoreCard = function () {
    this.score = 0;

    this.getScore = function () {
        setTimeout(() => {
            console.log(this.score);   // you get 0
        }, 1000);
    }
}

var a = new ScoreCard();
a.getScore();

Bir ok fonksiyonunun kendine ait bir işlevi yoktur. Re-TweetBunun yerine, üst kapsamdan gelen değişkeni paylaşır; bu nedenle, dışarıda tanımlanan değişkenlere ok fonksiyonu içinde bu şekilde erişilebilir. Daha kısa sözdizimleri ve geri çağırmalar, olay işleyicileri ve zamanlama fonksiyonları için kullanışlıdırlar.

TypeScript Sıralamalar

A TypeScript Enum, birbiriyle ilişkili değerlerin bir arada saklandığı bir nesnedir. JavaScript, enum'ları doğal olarak desteklemiyor. Çoğu programlama dili, örneğin... Java, C ve C++ destek numaralandırmaları ve TypeScript Bunları da kullanılabilir hale getirir. Enum'lar, `enum` anahtar kelimesi kullanılarak tanımlanır.

Enum nasıl ilan edilir?

Sözdizimi:

enum NameofEnum {
   value1,
   value2,
    ..
}

Örnek: Enum

enum Directions {
    North,
    South,
    East,
    West
}

Yukarıdaki örnekte, North, South, East ve West değerlerine sahip Directions adında bir enum tanımladınız. Değerler, ilk giriş için 0'dan başlayarak her sonraki giriş için 1 artarak numaralandırılmıştır.

Sayısal değere sahip bir Enum tanımlayın.

Varsayılan olarak, bir enum üyesine değer atanmazsa, 0'dan başlayarak bir sayı alır. Aşağıdaki örnek, açıkça sayısal değerlere sahip bir enum'u göstermektedir.

enum Directions {
North = 0,
South = 1,
East = 2,
West = 3
}

Ayrıca bir başlangıç ​​değeri atayabilir ve sonraki üyelere artan değerler verebilirsiniz. Örneğin:

enum Directions {
North = 5,
South, // will be 6
East,  // 7
West   // 8
}

Kuzey 5'ten başlıyor, dolayısıyla Güney 6, Doğu 7 ve Batı 8'dir.

Varsayılan değerler yerine kendi seçtiğiniz değerleri de atayabilirsiniz. Örneğin:

enum Directions {
North = 5,
South = 4,
East = 6,
West = 8
}

Bir Enum'a nasıl erişilir?

Aşağıdaki örnek, kodunuzda enum'u nasıl kullanacağınızı göstermektedir:

enum Directions {
    North,
    South,
    East,
    West
}

console.log(Directions.North);      // output is 0
console.log(Directions["North"]); // output is 0
console.log(Directions[0]);       // output is North

derlenmiş JavaSenaryo şu şekildedir:

var Directions;
(function (Directions) {
    Directions[Directions["North"] = 0] = "North";
    Directions[Directions["South"] = 1] = "South";
    Directions[Directions["East"] = 2] = "East";
    Directions[Directions["West"] = 3] = "West";
})(Directions || (Directions = {}));
console.log(Directions.North);
console.log(Directions["North"]);
console.log(Directions[0]);

Dan beri JavaKomut dosyası enum'ları desteklemediği için derleyici, yukarıda gösterildiği gibi enum'u kendi kendini çağıran bir fonksiyona dönüştürüyor. Çift atama, ters eşlemeyi oluşturan şeydir.ping Numaradan isme geri.

Dize değeri olan bir Enum tanımlayın.

Aşağıdaki örnekte gösterildiği gibi, istediğiniz metin değerlerini atayabilirsiniz.

Örnek:

enum Directions {
    North = "N",
    South = "S",
    East = "E",
    West = "W"
}

console.log(Directions.North);      // output is N
console.log(Directions["North"]); // output is N
console.log(Directions[0]);       // output is undefined

derlenmiş JavaSenaryo şu şekildedir:

var Directions;
(function (Directions) {
    Directions["North"] = "N";
    Directions["South"] = "S";
    Directions["East"] = "E";
    Directions["West"] = "W";
})(Directions || (Directions = {}));
console.log(Directions.North);
console.log(Directions["North"]);
console.log(Directions[0]);

⚠️Uyarı: Dize enum'larının ters eşlemesi yoktur.pingYukarıdaki iki derlenmiş çıktıyı karşılaştırın: sayısal enum her iki yönü de saklarken, dize enum yalnızca isimden değere olan ilişkiyi saklar. Bu yüzden Directions[0] Dize enum'u için tanımsız değer döndürür.

Modüller Nelerdir? TypeScript?

Oluşturulan dosyalar TypeScript Küresel erişime sahip olmak, bir dosyada tanımlanan değişkenlere başka bir dosyadan erişilebileceği anlamına gelir. Bu küresel yapı, kod çakışmalarına ve çalışma zamanı sorunlarına neden olabilir. Küresel değişken ve fonksiyon çakışmalarını önlemek için modül dışa aktarma ve içe aktarma işlevleri kullanılabilir. Bu özellik şu sürümde geldi: JavaES6 sürümüyle birlikte gelen ve ayrıca desteklenen bir komut dosyasıdır. TypeScript.

Neden Modüllere ihtiyacınız var? TypeScript?

Aşağıdaki örnek, modüller olmadan sorunu göstermektedir.

Örnek test1.ts

let age : number = 25;

Test1.ts'de yaş tipi numarasının değişkenini tanımladınız.

Örnek test2.ts

test2.ts dosyasında değişkene erişebilirsiniz. yaş test1.ts dosyasında tanımlananı aşağıda gösterildiği gibi değiştirin:

age = 30; // changed from 25 to 30.
let _new_age = age;

Bu durum birçok soruna yol açabilir, çünkü değişkenler küresel olarak erişilebilir ve her yerden değiştirilebilir.

İle modüllerYazılan kod dosya içinde kalır ve dosyanın dışından erişilemez. Bir dosyadan herhangi bir şeyi paylaşmak için, dosyayı `export` anahtar kelimesi kullanarak dışa aktarmanız gerekir. İhracat Bir değişkenin, sınıfın, fonksiyonun veya arayüzün başka bir dosyada kullanılmasını istediğinizde kullanılır. ithalat Bu yöntem, dışa aktarılmış bir öğeye erişmek istediğinizde kullanılır. Bu sayede dosya içindeki kod bozulmadan kalır ve aynı değişken adlarını tanımlasanız bile bunlar birbirine karışmaz.

Dışa Aktarma ve İçe Aktarmayı Kullanma

Dışa aktarma ve içe aktarma için birçok yöntem vardır. Biz burada en yaygın kullanılan sözdizimini ele alacağız.

İçe ve dışa aktarma 1'in sözdizimi:

export  nameofthevariable or class name or interface name etc

//To import the above variable or class name or interface you have to use import as shown below:

import {nameofthevariable or class name or interfacename} from "file path here without .ts"

İşte dışa aktarma ve içe aktarmayı kullanan çalışan bir örnek.

test1.ts

export let age: number = 25;

`export` anahtar kelimesi, yaş değişkenini başka bir dosyayla paylaşmak için kullanılır.

test2.ts

import { age } from "./test1"
let new_age :number = age;

`import` anahtar kelimesi, erişim sağlamak için kullanılır. yaş değişkendir ve dosya konumunu yukarıda gösterildiği gibi belirtmeniz gerekir.

İçe ve dışa aktarma için sözdizimi 2:

Dışa aktarma ve içe aktarma için başka bir yöntem daha vardır ve sözdizimi aşağıda gösterildiği gibidir:

export = classname;

import classname = require("file path of modulename")

Kullanırken dışa aktarma = Modülünüzü dışa aktarmak için, içe aktarma işleminde require(“modül adının dosya yolu”) kullanılması gerekir.

İşte bu durumu gösteren çalışan bir örnek.

Müşteri.ts

class Customer {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    getName(): string {
        return this.name;
    }
}

export = Customer;

testCustomer.ts

import Customer = require("./Customer");

let a = new Customer("Harry", 30);
alert(a.getName());

Modül Yükleyici

Modüller kendi başlarına çalışamazlar, bu nedenle içe aktarma bağımlılıklarını bulmak için bir modül yükleyiciye ihtiyacınız vardır, aşağıdaki resimde görüldüğü gibi. TypeScript Yukarıdaki örneklerde olduğu gibi, Node.js için CommonJS ve tarayıcıda çalıştırmak için Require.js modül yükleyicileri mevcuttur.

CommonJS modül formatını kullanarak kod derlemek için aşağıdaki komutu kullanın:

tsc --module commonjs testCustomer.ts

Requirejs modül formatını kullanarak kod derlemek için aşağıdaki komutu kullanın:

tsc --module amd testCustomer.ts

Yukarıdaki komutla bağımlı dosyalar JavaScript dosyalarına dönüştürülecektir.

Requirejs kullanarak testCustomer.ts'den testCustomer.js'ye örnek

define(["require", "exports", "./Customer"], function (require, exports, Customer) {
    "use strict";
    exports.__esModule = true;
    var a = new Customer("Harry", 30);
    alert(a.getName());
});

Requirejs kullanarak Customer.ts'den Customer.js'ye örnek

define(["require", "exports"], function (require, exports) {
    "use strict";
    var Customer = /** @class */ (function () {
        function Customer(name, age) {
            this.name = name;
            this.age = age;
        }
        Customer.prototype.getName = function () {
            return this.name;
        };
        return Customer;
    }());
    return Customer;
});

Bunu require.js kullanarak test etmek için, gösterildiği gibi bağımlılıkları referans alan main.js adında bir dosya oluşturmanız gerekir.

İşte klasör yapısı:

src/
    Customer.js
    testCustomer.js
    main.js
    require.js  // you can get this file from github or npm install requirejs
    test.html

ana.js

define(function (require) {
    var customer = require("./Customer");
    var testCustomer = require("./testCustomer");
});

test.html

<!DOCTYPE html>
<html>
<head>
    <title>TypeScript Module testing using Requirejs</title>
    <script data-main="main" src="require.js"></script>
</head>
<body>
    <h3>Testing modules using Requirejs</h3>
</body>
</html>

Modül Yükleyici

Ad alanları TypeScript

Bir ad alanı, sınıfları, arayüzleri, değişkenleri ve fonksiyonları tek bir dosyada bir araya getirir.

Ad Alanı Söz Dizimi

namespace name{

export class {
}

export interface {
}

export const constname;

}

İlgili kod tek bir ad alanı altında mevcuttur.

Ad alanı çalışma örneği: testnamespace.ts

namespace StudentSetup {

    export interface StudDetails {
        name: string;
        age: number;
    }

    export function addSpace(str) { // will add space to the string given
        return str.split("").join(" ");
    }

    export class Student implements StudDetails {
        name: string;
        age: number;

        constructor(studentdetails: StudDetails) {
            this.name = studentdetails.name;
            this.age = studentdetails.age;
        }

        getName(): string {
            return this.name;
        }
    }
}

Ad alanının adı Öğrenci KurulumuAyrıca StudDetails adında bir arayüz, addSpace adında bir fonksiyon ve Student adında bir sınıf eklediniz.

Bir Ad Alanına Erişim

Aşağıda ad alanını kullandığınız kod örneği verilmiştir. Öğrenci Kurulumu.

testStudentSetup.ts

let a = new StudentSetup.Student({ name: "Harry", age: 20 });

console.log("The name is :" + StudentSetup.addSpace(a.getName()));

Bir ad alanı içinde bulunan sınıf, arayüz veya fonksiyona, örneğin ad alanı adı kullanılarak başvurulmalıdır. ÖğrenciSetup.addSpace fonksiyona erişmek için ve ÖğrenciSetup.Öğrenci sınıfa erişmek için.

Aşağıda gösterildiği gibi, her iki dosyayı da tek bir JavaScript dosyasına derleyebilirsiniz:

tsc --outFile namespace.js testnamespace.ts  testStudentSetup.ts

Aşağıdaki komutu kullanarak komut isteminde çıktıyı kontrol edin:

node namespace.js

Çıktı:

The name is :H a r r y

Ortam Bildirimleri TypeScript

TypeScript üçüncü taraf kullanmanıza olanak tanır JavaOrtam bildirimlerini kullanan betik dosyaları. Bu özelliğin avantajı, kütüphaneyi yeniden yazmanıza gerek kalmadan, tür kontrolüyle birlikte tüm özelliklerini kullanabilmenizdir. TypeScript.

Ortam Söz Dizimi

Ortam modülü tanımlamak için:

declare module moduleName {
   //code here
}

Ortam dosyası şu şekilde kaydedilmelidir:

filename.d.ts

Dosyayı kullanmak için dosyaadı.d.ts .ts dosyanızda şu şekilde referans vermeniz gerekiyor:

/// <reference path="filename.d.ts"/>

Ortam türü bildirimi TypeScript Üçüncü taraf kütüphaneye atıfta bulunur ve gerekli fonksiyonları kendi türleriyle yeniden tanımlar. Örneğin, küçük bir örneği ele alalım. JavaAşağıda komut dosyası kütüphanesi gösterilmektedir.

Üçüncü şahıs JavaKomut dosyası: testString.js

var StringChecks = {
    isString: function (str) {
        return typeof str === "string";
    },

    convertToUpperCase: function (str) {
        return str.toUpperCase();
    },

    convertToLowerCase: function (str) {
        return str.toLowerCase();
    },

    convertToStringBold: function (str) {
        return str.bold();
    }
};

StringChecks adında bir nesneniz var ve bu nesne isString, convertToUpperCase, convertToLowerCase ve convertToStringBold fonksiyonlarına sahip.

Ortam Modülü Oluşturma TypeScript

Şimdi, referans veren bir ortam modülü oluşturacağız. JavaYukarıdaki işlevleri yerine getirir ve gerektiğinde tür kontrolleri ekler.

Dosya adı: tstring.d.ts

declare module TestString {

    export interface StringsFunc {
        isString(str: string): boolean;
        convertToUpperCase(str: string): string;
        convertToLowerCase(str: string): string;
        convertToStringBold(str: string): string;
    }
}

declare var StringChecks: TestString.StringsFunc;

TestString adında bir modül tanımlıyorsunuz ve StringsFunc arayüzünü dışa aktarıyorsunuz. Her bir imza, fonksiyonun neyi kabul ettiğini ve neyi döndürdüğünü belirtir:

  • isString(str: string): boolean – Bir metin dizesi alır ve bir boolean değer döndürür. Sayı veya başka bir tür geçirilmesi derleme zamanı hatasına neden olur.
  • convertToUpperCase(str: string): string – bir metin dizisi alır ve bir metin dizisi döndürür.
  • convertToLowerCase(str: string): string – bir metin dizisi alır ve bir metin dizisi döndürür.
  • ConvertToStringBold(str: dize): dize – bir metin dizisi alır ve bir metin dizisi döndürür.

Yana JavaKomut dosyası StringChecks nesne adını ortaya çıkarıyor, biz de .d.ts dosyasında aynı adı kullanıyoruz:

declare var StringChecks: TestString.StringsFunc;

Ortam modülünü kullanma TypeScript

İşte ortam dosyası tstring.d.ts'yi kullanan test.ts dosyası.

/// <reference path="tstring.d.ts"/>
let str1 = StringChecks.isString("Hello World");
console.log(str1);
let str2 = StringChecks.convertToUpperCase("hello world");
console.log(str2);
let str3 = StringChecks.convertToLowerCase("HELLO");
console.log(str3);
let str4 = StringChecks.convertToStringBold("Hello World");
console.log(str4);

`tsc test.ts` komutuyla derleyerek `test.js` dosyasını oluşturun:

/// <reference path="tstring.d.ts"/>
var str1 = StringChecks.isString("Hello World");
console.log(str1);
var str2 = StringChecks.convertToUpperCase("hello world");
console.log(str2);
var str3 = StringChecks.convertToLowerCase("HELLO");
console.log(str3);
var str4 = StringChecks.convertToStringBold("Hello World");
console.log(str4);

Artık test.js dosyasını testString.js kütüphane dosyasıyla birlikte bir HTML dosyasında kullanabilirsiniz.

<html>
<head>
    <title>Test TypeScript Ambient</title>
    <script src="testString.js"></script>
    <script src="test.js"></script>
</head>
<body>
</body>
</html>

Çıktı:

true
HELLO WORLD
hello
<b>Hello World</b>

💡 İpucu: Popüler kütüphaneler için nadiren kendiniz bir .d.ts dosyası yazmanız gerekir. Bunun yerine, örneğin topluluk tarafından bakımı yapılan türleri yükleyin. npm install --save-dev @types/lodashDerleyici bunları otomatik olarak algılar.

Devam etmek için, iki dili doğrudan karşılaştırın. TypeScript vs JavaSenaryo, tekrar ziyaret et JavaKomut dosyası dizi yöntemleri Burada kullanılan yazılı olmayan karşılıklar için ve inceleyin. döngüler JavaSenaryo hem de dahili ve harici JavaSenaryo Tarayıcının temel prensipleri, derlenmiş çıktının dayandığı unsurlardır.

SSS

Hayır. Bir tarayıcı çalıştırır. JavaYalnızca betik dosyası olduğundan, .ts dosyasının önce tsc veya bir paketleyici ile derlenmesi gerekir. Bu adımda tür açıklamaları silinir ve çalışma zamanı maliyeti yoktur.

Evet. tsconfig.json dosyasında allowJs'yi etkinleştirin ve dosyaları tek tek yeniden adlandırın. Çünkü her JavaKomut dosyası zaten geçerli. TypeScriptProje, geçiş işlemi boyunca derlenmeye devam eder.

Bir arayüz yeniden açılabilir ve genişletilebilir ve nesne şekilleri için genellikle tercih edilen yöntemdir. Bir tür takma adı ayrıca arayüzlerin ifade edemediği birleşimleri, demetleri ve temel veri tiplerini de kapsar.

Modülleri dışa aktarma ve içe aktarma özellikleriyle kullanın. Ad alanları (namespaces) ES modüllerinden önce ortaya çıkmıştır ve çoğunlukla bildirim dosyaları ve eski betik tabanlı kod tabanları için kullanışlıdır.

Evet, ölçülebilir bir şekilde. Derleyici, yanıltıcı özellikleri ve yanlış argüman türlerini anında reddeder, bu nedenle oluşturulan kod parçası ya tür kontrolünden geçer ya da tam olarak nerede yanlış olduğunu bildirir.

Editör entegrasyonları, çevreleyen türleri ve .d.ts dosyalarını model bağlamına aktarır. Bu nedenle, daha zengin açıklamalar, gevşek tipli koda göre daha doğru tamamlamalar üretir.

Bu yazıyı şu şekilde özetleyin: