Это плохая практика или стоит ли помечать функцию, интерфейс машинописного текста или тип машинописного текста экспортом, а затем никогда не импортировать их? - PullRequest
0 голосов
/ 09 мая 2020

Мне это кажется простым вопросом, но я не могу найти никого, кто бы задавал этот вопрос раньше. Я работаю над проектом TypeScript с Vue, и разработчик пометил несколько интерфейсов и методов экспортом, но не использовал их где-либо еще в приложении. Например, export interface CustomStageEvent.

Сколько стоит маркировка чего-либо с помощью экспорта? Должен ли я беспокоиться, если что-то экспортируется и больше нигде не используется?

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Стоимость любого API, сделанного publi c (что и происходит), заключается в том, что вы больше не можете изменить или удалить его, потому что кто-то где-то может его использовать, и вы нарушите их код.

В качестве крайнего примера просто посмотрите на сколько времени потребовалось, чтобы удалить sun.misc.Unsafe из Java, и сколько кода был нарушен этим удалением , хотя в документации прямо указано, что вам не разрешено его использовать . (Фактически, sun.misc.Unsafe на самом деле все еще там, поэтому удаление не удалось , потому что его использует очень много кода, хотя это явно запрещено.)

Если вы экспортируете API, вы даете обещание пользователям этого API. Экспортируйте только те API, в отношении которых вы готовы дать и выполнить это обещание.

1 голос
/ 09 мая 2020

Помимо отличного ответа @Jorg W Mittag, если вы думаете о производительности, я не думаю, что это окажет какое-либо заметное влияние.

Ваш модуль все равно будет анализироваться средой выполнения JS, даже если вы пометить что-то как экспортированное или нет.

Вероятно, ваш объем памяти будет таким же, поскольку модуль все равно будет хранить ссылки на внутренние методы. Я не уверен, что вы получите меньший объем памяти, если у вас есть внутренние методы, на которые нет ссылок из модуля, так как они могут быть безопасно удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...