Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
class A {
private x = 1;
}
class B {
#x = 1;
}
console.log(JSON.stringify(new A()), JSON.stringify(new B()));{"x":1} {}
- Ждать, что
privateспрячетxотJSON.stringify: tsc стирает модификатор, и в JavaScriptx— обычное поле, котороеJSON.stringifyперечисляет. - Ждать, что
#xпопадёт в вывод, как любое поле: поле#закрыто средствами самого JavaScript, и его не видят ниJSON.stringify, ниObject.keys.
- Что сообщит tsc на
new A().xи наnew B().#x, написанные снаружи классов? - Когда хватает
private, а когда нужно поле#?