-
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-04-28 wymiana przewodu od licznika do mieszkania
- 2024-04-28 Lustra w maszynie ASML
- 2024-04-28 Elektryk przytarł podłogę
- 2024-04-27 Nowy, "szybki "komputer AsRock nie posiada modułu TPM
- 2024-04-27 Nowy, "szybki "komputer AsRock nie posiada modułu TPM
- 2024-04-27 Warszawa => Inżynier DevOps (projekt JP) <=
- 2024-04-27 Warszawa => Senior Account Manager (on-site) <=
- 2024-04-27 Wrocław => Dyrektor Sprzedaży (branża usług/produktów IT) <=
- 2024-04-27 Warszawa => Sales Representative for Outsourcing Services <=
- 2024-04-27 Chrzanów => Administrator i wdrożeniowiec Lotus Notes/Domino <=
- 2024-04-27 Ja pierdolę...
- 2024-04-27 Ryby i kawitacja
- 2024-04-27 Zabrze => Junior HelpDesk <=
- 2024-04-27 Katowice => Administrator IT - Wirtualizacja i Konteneryzacja <=
- 2024-04-27 Bażanowice => Inżynier Industrializacji - Elektronik <=