Есть ли сценарий использования для экспорта того же `const`, что и для именованного экспорта по умолчанию? - PullRequest
0 голосов
/ 30 марта 2020

Вопрос

Я видел большую базу кода, где каждый файл с константами выглядит примерно так:

export const DEFAULT_ID = 0;
export const CURRENT_CODE = 'ABC123';

export default {
  DEFAULT_ID,
  CURRENT_CODE
};

Они используют как именованные, так и экспорт по умолчанию для всех константы. Когда дело доходит до того, как константы на самом деле импортируются, кажется, что они обычно просто импортируют их как именованные экспорты:

import {CURRENT_CODE} from './whatever.consts';

Есть ли какой-либо вариант использования для этой практики? Это довольно необычно, поскольку обычно для указанной константы c используется именованный или экспорт по умолчанию, а не оба.

Исследования

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

Ближайший ответ, который я получил, был в этой статье, В разделе « Зачем выставлять символ как по умолчанию, так и с именованным экспортом ?», Они предоставляют краткий пример того, как это позволяет кому-то использовать import {A, B} from './a' вместо необходимости писать что-то вроде import A, {B} from './a'. Однако это объяснение не имеет смысла для меня, поскольку тот же синтаксис можно использовать, если константы просто экспортируются как именованные экспорты.

Мои мысли

Единственная причина, о которой я могу думать, это что этот подход может дать больше гибкости, когда дело доходит до импорта констант. То есть он позволяет использовать как

import {DEFAULT_ID, CURRENT_CODE} from './whatever.consts';

let id = DEFAULT_ID, code = CURRENT_CODE;

и

import INITIALIZATION_CONSTS from './whatever.consts';

let id = INITIALIZATION_CONSTS.DEFAULT_ID, code = INITIALIZATION_CONSTS.CURRENT_CODE

для импорта констант.

Является ли это действительной причиной для использования этого подхода? Какие-либо практические последствия?

1 Ответ

2 голосов
/ 30 марта 2020

Есть ли какой-либо вариант использования для этой практики?

Не совсем. Единственное, о чем я могу думать, это обратная совместимость, возможно связанная с тем, как они передают свой код, если модуль является библиотекой, используемой в другом месте.

Единственная причина, по которой я могу думать, заключается в том, Такой подход может обеспечить большую гибкость при импорте констант.

Экспорт по умолчанию для этого не требуется. Вы можете легко использовать импорт пространства имен только с именованным экспортом:

import * as INITIALIZATION_CONSTS from './whatever.consts';

let id = INITIALIZATION_CONSTS.DEFAULT_ID, code = INITIALIZATION_CONSTS.CURRENT_CODE
...