Кажется, что при инициализации переменной внутри библиотеки она находится только в области видимости библиотеки.
В моем первом решении я просто возвратил значение:
export initLocale(userLocaleFunction) {
locale = userLocaleFunction;
return locale;
}
Но потом понял, что это создает новую проблему: что, если локаль модифицируется внутри библиотеки или, что еще хуже, вне ее?
В духе избегания двух источников истины я закончил с этим:
locale = undefined;
export initLocale(userLocaleFunction) {
locale = userLocaleFunction;
}
export getLocale() {
if (locale === undefined) {
throw new Error("Uninitialized locale");
}
return locale;
}
Этот код выполняет проверку is initialized
, которая мне сначала понадобилась, и дает значение с одним источником правды.