Belirtilmediğinde hangi erişim değiştiriciler ima edilir?


138

Alanlar, özellikler, yöntemler ve sınıflar gibi erişim değiştiricileri destekleyen tüm farklı kavramlar için, belirtilmezse hangi erişim değiştiriciler ima edilir?


@basarat, TypeScript kullandığımdan bu yana uzun zaman geçti, bu yüzden bugünlerde nasıl çalıştığını hatırlamak zor! Hatırladığım kadarıyla, cevabınız makul görünüyordu, ancak doğru olarak işaretlemem için yeterince yetkili olduğunu hissetmedim. Cevabınız dil konusundaki deneyiminize mi dayanıyor, yoksa spesifikasyonlardaki bilgilerden mi?
Sam


1
Bu soruyu ve cevabı açıklığa kavuşturmak için soruda açıklığa kavuşturmak için daktilo yazılması gerekiyordu. Orada bir typescript etiketi, ama biz tartışmıyoruz sadece göstergesidir scala, java, C #, C ++, ....
absmiths

Yanıtlar:


216

Bir de her şey classolduğunu publicbelirtilmediği sürece. Bir herşey modulesürece özel exportanahtar kullanılır.


6
Başlangıç ​​seti ile oynayanlar için. Bazıları tslint ile gönderilir ve çok kafa karıştırıcı olabilir. Bu mesajın gördüğünüzde default access modifier on member/method not allowed Kontrolü tslint.jsonvarsayılan veya zımni erişim değiştirici izin vermek.
16'da visheshd

1
Otomatik olarak atamak için aktarım öncesi bir adım kullanmak mümkün müdür private?
Qwerty

-4

Buna katılmıyorum

Bir sınıftaki her şey belirtilmezse herkese açıktır.

Özel olsa bile her şey herkese açıktır. Sadece aktarılan koda bakın. Özel açıklamalı yöntemler herkese açık olacak. Yalnızca aktarma hataları verir. Hem genel hem de özel,<Object>.prototype.funcName


24
Evet, bu iyi bir nokta. Ancak sorum daha which access modifiers are implied when not specifiedziyade idi can my code be accessed when an access modifier is not specified. Erişim değiştiricileri JavaScript konseptinden ziyade bir TypeScript konseptidir. Bence @ basarat'ın cevabı soruda ne demek istediğimi ele aldı ve soru bağlamında doğru görünüyor. Belki de soru ve cevaptaki ifadeleri belirsizleştirmek için biraz yer vardır.
Sam

TS böyle çalışır, TS açısından "doğru" olursa olsun kodunuzu derler, bu TS'deki sınıflar hariç her şeyi ifade eder, ancak asıl mesele TS uyarılarına saygı duyarsanız - özel olarak işaretlenmiş özelliklere erişiyor olabilirsiniz.
Andrew Bogdanov

3
Bir şeyin gerçekten özel olduğu herhangi bir dili düşünemiyorum. C # ' da herhangi bir özel alana yansıma ile kolayca ulaşabilirsiniz. C veya C ++ gibi alt düzey dillerde, yalnızca işaretçileri hareket ettirerek özel alanlara ulaşabilirsiniz. DEP ve şifrelenmiş bellek gibi işletim sistemi düzeyindeki güvenlik önlemlerinden kısa olan erişim değiştiriciler, daha iyi kod yazmanıza yardımcı olmak için derleyici tarafından sağlanan yardımdır. ...Sağ?
pbarranis

@pbarranis özel JavaScript alanları aslında özeldir ve JavaScript çalışma zamanından bunlara erişmenin bir yolu yoktur.
Yogu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.