Article View: pl.comp.www
Article #408818Re: TypeScript - jak uzyskać zmienne prywatne? Gdzie korzyści z TS?
From: Marek S
Date: Thu, 05 Sep 2019 17:58
Date: Thu, 05 Sep 2019 17:58
78 lines
2576 bytes
2576 bytes
W dniu 2019-09-05 o 05:54, Szyk Cech pisze:
> Na pewno wiesz co robisz?
Wydaje mi się, że tak. Od lat programuję w natywnym JS.
> _message raczej powinno być tylko jedno w obu klasach. Dziedziczenie
> polega na tym, że od przodka wjeżdża wszystko.
> Inny problem jest taki, że _message jest prywatna.
No i o tym problemie mowa. W natywnym JS ES6 nie mam problemu z
tworzeniem zmiennych prywatnych, a i metod też - choć ponoć takowe nie
istnieją. TS już tego nie potrafi więc w tym zakresie kuleje. Oto przykład:
Moduł 1:
let privateMethod = Symbol();
let privateVar = Symbol();
class a {
constructor() {
this[privateVar]=5;
}
this[privateMethod]() {
console.log(this[privateVar]);
}
printA() {
this[privateMethod]();
}
}
Moduł 2:
import a from ...
let privateMethod = Symbol();
let privateVar = Symbol();
class b extends a {
constructor() {
this[privateVar]=10;
}
printB() {
this.printA();
console.log(this[privateVar]);
}
}
let obj = new b();
obj.printB(); // metoda publiczna
// 5
// 10
obj.printA(); //metoda publiczna
//5
obj[privateMethod](); //metoda prywatna
//error
W powyższym przykładzie privateVar jest prawdziwie prywatne dla obu
klas. Wywołanie prywatnej metody privateMethod kończy się błędem. Da się
to zrobić w ES6? Da się! A TypeScript wymięka. A wystarczyłoby aby
transkodował prywatne zmienne i metody do konstrukcji z wykorzystaniem
symboli.
Kod pisałem z palca - więc mogłem jakieś błędy popełnić.
--
Pozdrawiam,
Marek
Technical Details
Message-ID:
<qkrica$s14$1@news.icm.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mailReferences:
<qkp5ov$imf$1@news.icm.edu.pl> <bG%bF.588988$GfB1.22808@fx36.am4>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail From: Marek S <precz@spamowi.com> Newsgroups: pl.comp.www Subject: Re: TypeScript - jak uzyskać zmienne prywatne? Gdzie korzyści z TS? Date: Thu, 5 Sep 2019 19:58:32 +0200 Organization: ICM, Uniwersytet Warszawski Lines: 78 Message-ID: <qkrica$s14$1@news.icm.edu.pl> References: <qkp5ov$imf$1@news.icm.edu.pl> <bG%bF.588988$GfB1.22808@fx36.am4> NNTP-Posting-Host: 89-77-183-104.dynamic.chello.pl Mime-Version: 1.0 X-Trace: news.icm.edu.pl 1567706314 28708 89.77.183.104 (5 Sep 2019 17:58:34 GMT) X-Complaints-To: usenet@news.icm.edu.pl NNTP-Posting-Date: Thu, 5 Sep 2019 17:58:34 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.0 In-Reply-To: <bG%bF.588988$GfB1.22808@fx36.am4> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit