Я хочу немного приватности для некоторых полей и методов моего класса
- я знаю, что символы не действительно приватны, но я просто не хочу "закрытые "члены", просто плавающие вокруг, чтобы люди могли их легко использовать, речь идет о сигнале намерения
- ключевое слово "private" машинописного текста ничего не делает для обозначения намерения о конфиденциальности, ни добавляя префикс подчеркивания, ни используя символы(даже не в качестве опции)
- я не хочу ждать, пока машинопись введет предложение
#
для приватных полей, и не переключиться на babel сейчас над этим
здесь, вмой проект удивительно я создал несколько классов, которые используют символы для доступа к закрытым членам
шаблон в основном:
const _counter = Symbol()
export class CountingThing {
private [_counter] = 0
}
я подумал, что это хороший способреализовать конфиденциальность до тех пор, пока машинопись не будет, наконец, включать синтаксис частного поля #
- это прекрасно работает для пользователей npm только для javascript
к сожалению, этот шаблон не 'Кажется, что он работает для машинописи потребителей моего пакета
моего потребителя проекта получает эти ошибки во время компиляции машинописи:
node_modules/quizzly/dist/components/quizzly-question.d.ts:8:13 - error TS1166: A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type.
8 private [_getChoices];
~~~~~~~~~~~~~
node_modules/quizzly/dist/components/quizzly-question.d.ts:8:14 - error TS2304: Cannot find name '_getChoices'.
8 private [_getChoices];
~~~~~~~~~~~
node_modules/quizzly/dist/components/quizzly-quiz.d.ts:26:13 - error TS1166: A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type.
26 private [_getSlottedElements];
~~~~~~~~~~~~~~~~~~~~~
node_modules/quizzly/dist/components/quizzly-quiz.d.ts:26:14 - error TS2304: Cannot find name '_getSlottedElements'.
26 private [_getSlottedElements];
но с какой стати потребитель будет жаловаться на частные переменные, о которых потребитель даже не должен знать вообще?
, как ни странно, сам шутливый проект сообщает, что нетошибки во время компиляции машинописи, это затрагивает только потребителей, использующих файлы .d.ts
, какие стратегии доступны в машинописи на сегодняшний день для реализации некоторого подобия конфиденциальности?