-
Data: 2019-09-05 19:58:32
Temat: Re: TypeScript - jak uzyskać zmienne prywatne? Gdzie korzyści z TS?
Od: Marek S <p...@s...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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
Następne wpisy z tego wątku
- 05.09.19 20:21 Marek S
- 06.09.19 13:55 Tomek
- 06.09.19 14:57 Marek S
- 07.09.19 16:12 Roman Tyczka
- 08.09.19 00:07 Marek S
Najnowsze wątki z tej grupy
- is it live this group at news.icm.edu.pl
- php, linki z nazwami a $_GET, SEO
- www polityka pl captcha
- dyktatura brudnego palucha
- www.znanylekarz.pl
- Czy pytanie o sczytywanie stron programami/skryptami to tu?
- Grupy webdevowe
- Jak wydrukować stronę?
- IIS, kilka witryn
- linki <a href="/strona.php"> (ze slashami)
- co rozszerza stronę??
- responsywny akapit <p>
- Czy istnieje jakiś emulator przeglądarek pod Mac'a?
- taka sama konfiguracja dla localhost i produkcji
- TypeScript - jak uzyskać zmienne prywatne? Gdzie korzyści z TS?
Najnowsze wątki
- 2024-05-28 Przednia lampka rowerowa Basta / AXA pod dynamo w piaście
- 2024-05-28 Boję siię capa...
- 2024-05-24 Efekt gitarowy koda kd-30 trash metal
- 2024-05-27 Re: Efekt gitarowy koda kd-30 trash metal
- 2024-05-27 Wykrywanie przerwy w długim przewodzie zakopanym w ziemi.
- 2024-05-27 PT500
- 2024-05-28 Łódź => SAP CO Consultant <=
- 2024-05-28 Białystok => Senior Developer React Native <=
- 2024-05-28 Kraków => Mid/Senior QA Engineer <=
- 2024-05-28 Wrocław => Key Account Manager <=
- 2024-05-28 Białystok => ERP Implementer <=
- 2024-05-28 => Solution Architect (secure communication and IoT solutions) <=
- 2024-05-28 Warszawa => Staż w dziale Sprzedaży B2B (2 miejsca) <=
- 2024-05-28 Szczecin => Realtime (C) Software Developer <=
- 2024-05-27 Warszawa => Senior Account Manager (stacjonarnie) <=