2016-04-25 14 views
6

TypeScript'te private ve protected değişkenleri arasındaki fark nedir? Benzer sorular C# için var ama iki dilde kavramların aynı olup olmadığından emin değilim. Eğer değilse, farklılıkları bilmek faydalı olacaktır. TypeScript, C# 'den olduğu gibi çok benzer bir şekilde çalışır.TypeScript - Özel ve Korumalı Değişkenler Arasındaki Fark

+0

@JoeClay Bu C# için geçerlidir. Cevaplar çoğunlukla TypeScript için “doğru” iken, cevaplar ayrıca TypeScript'in sahip olmadığı erişim düzenleyicilerini de belgeliyor. – vcsjones

+0

@vcsjones: Bu adil bir nokta, cevabın C# belirli bölümleri onları karıştırabilir. Bayrağı siler. –

cevap

3

protectedTypeScript release notes o şekilde belgelemek: Sadece sağlayan

The new protected modifier in classes works like it does in familiar languages like C++, C#, and Java. A protected member of a class is visible only inside subclasses of the class in which it is declared

private Oysa Eğer acil sınıf türü erişebilir. Özel üyeler alt sınıflara görünmez.

15

Diğer OO dillerindekiyle aynıdır.
Özel yöntemler/üyelere yalnızca sınıfın içinden erişilebilir.
Korunan yöntemler/üyelere sınıfa ve genişletme sınıfına erişilebilir. sınıfta A hem (özel) erişim this.x ve (korumalı) this.y var olduğunu

class A { 
    private x: number; 
    protected y: number; 

    constructor(x: number, y: number) { 
     this.x = x; 
     this.y = y; 
    } 

    getX(): number { 
     return this.x; 
    } 

    getY(): number { 
     return this.y; 
    } 
} 

class B extends A { 
    multiply(): number { 
     return this.x * this.y; 
    } 
} 

dikkat edin.

Property 'x' is private and only accessible within class A

(sen playground hatayı görebilir)

olsa anlamak önemlidir Bu tutanak sadece doğru olduğunu Nedir:
Ama sınıfta B içinde this.y ve this.x tek erişim var bu hata var .
Javascript'te bu üyelere, örneğe başvurusu olan herkes erişilebilir.