Согласно Брайану Терлсону , в качестве практического правила следует использовать ранжированные зависимости между равными.
Нормальная зависимость (не рекомендуется)
Вы выбираете версию @types
, но нет гарантии, что она будет соответствовать версии, которую используют ваши потребители.Например, вы можете выбрать @types/node@10.0.0
, когда ваши пользователи находятся на Узле 11.
Зависимость разработки (не рекомендуется)
Поскольку они не устанавливаются при установке ваших потребителейваш пакет, им нужно будет добавить его в свой проект (при условии, что они используют TypeScript).
Зависимость разработки, отраженная в вашем исходном коде (иногда рекомендуется)
Если вы используете @types/*
минимально, возможно, имеет смысл отразить определение используемого типа в вашем коде.Подражайте тому, что делают определения третьих сторон, и сохраните это в своем коде.Недостатком является необходимость синхронизации ваших собственных определений с их исходной версией.
Зависимость от сверстников (рекомендуется)
Средний уровень.Они будут установлены и повторно использованы вашим пакетом и пакетами ваших потребителей.Единственная проблема, которая приходит на ум, - это когда несколько библиотек зависят от некоторых @types/*
, но их версии не совпадают.