Этот объект:
export const OtherUtilities = {
Sum(a:number, b:number) : number => {
return a+b;
},
Hello() : string => {
return "Hello";
}
}
Содержит две совершенно не связанные функции.Им не нужно совместно использовать this
контекст, они не знают друг друга и могут прекрасно экспортироваться как две отдельные функции, событие в двух отдельных модулях.Конечно, они могут принадлежать одному и тому же объекту, но для этого нет веских оснований.
С другой стороны, если вы экспортируете их как отдельные объекты:
export function sum()...
export function hello()...
Они три встряхиваемых .Если ваше приложение импортирует только Hello()
, их Sum
можно выбросить из пакета.
Теперь, со второй стратегией, вы скорее получите коллизии имен.Вы можете предотвратить их, используя ключевое слово as
:
import {Sum} from 'one';
import {Sum as myCustomSum} from 'two';
Помимо трех сотрясений, я не думаю, что есть большая разница между одним стилем или другим.Вы можете экспортировать что угодно с модулями ecmaScript, будь то функции, строки, числа или любые другие виды примитивов, массивов или объектов.Это в значительной степени зависит от вас и от кодовых соглашений вашей команды.
Некоторые библиотеки раньше экспортировали независимые функции, принадлежащие большому служебному объекту, но затем изменили стиль и переключились на независимые именованные экспорты, именно для того, чтобы включить тривстряхивание (а иногда это делают только независимые проекты, например lodash-es ).