Мой главный вопрос: если я импортирую тип из сторонней библиотеки один раз в свой проект, а затем импортирую / экспортирую его несколько раз внутри страны, я все равно несу расходы, которые я бы импортировал каждый раз непосредственно из Сторонняя библиотека?
Справочная информация:
Недавно я начал использовать отличное расширение vscode, которое называется import-cost , которое показывает размер импортируемых вами пакетов. E.g.:
import { cloneDeep } from 'lodash'; 70.7K
import cloneDeep from 'loadash/cloneDeep'; 14.9K // way better!!
Это позволило мне лучше понять, как все, что я импортирую, в конечном итоге повлияет на мой окончательный размер пакета. Одна конкретная проблема, которую я заметил, - это импорт типов TypeScript из сторонних библиотек. Чтобы импортировать только один тип, вам все равно нужно импортировать весь пакет. E.g.:
import { IComponentOptions } from 'angular'; 168.3K // Not cool!!!
Если это не может быть улучшено каким-либо образом, я просто не уверен, что оно того стоит.
Итак, мой вопрос: вместо того, чтобы импортировать этот тип каждый раз, когда я пишу компонент, прямо из angular, если я делаю что-то вроде следующего, это дешевле, чем импортировать его каждый раз напрямую из углового? Пример:
путь / к / мой / проекта / типы / shims.d.ts
export { IComponentOptions } from 'angular';
путь / к / мой / проект / компоненты / MyComponent / myComponent.cmpt.ts
import { IComponentOptions } from "../../types/shims";
import controller from './myComponent.ctrl';
import template from './myComponent.tpl.html';
const myComponent: IComponentOptions = {
template,
controller,
bindings: {
someBinding: '@'
}
};
export default myComponent;
Если интерфейс IComponentOptions
импортируется из файла shims
несколько раз, как это происходит в моем проекте, я все равно несу затраты на импорт каждый раз, или же концепция совместного использования файлов внутри компании меньше дорого?
Общий вопрос имеет большее значение, чем просто набор текста, но это особый вариант использования, который спровоцировал это в настоящий момент.
Если кто-нибудь может ответить на это, я был бы очень признателен! Спасибо
РЕДАКТИРОВАНИЕ ПОСЛЕ ОТВЕТА:
Как указано в принятом ответе, на самом деле это похоже на ошибку с расширением import-cost, так как импорт только типов из библиотек не должен приводить к импорту кода модуля. Я открыл проблему здесь , чтобы, надеюсь, решить эту проблему.
Поскольку этот вопрос имеет дальнейшие последствия, другой ответ также очень полезен, и важно отметить, что хотя import-cost покажет стоимость каждого импорта, если вы импортируете что-то несколько раз, это не так. дороже, чем импортировать что-то один раз.