Есть ли способ представить литералы шаблона JS в аннотациях типа Bucklescript? - PullRequest
0 голосов
/ 24 октября 2018

Я использую библиотеку интернационализации в JS (https://github.com/format-message/format-message), которая содержит функцию, которая принимает литерал шаблона и объект. Литералы шаблона не имеют интерполированных переменных JS, но текст должен бытьзаключенные в кавычки, а не в кавычки, например, при переводе множественных вариантов в формате ICU. Есть ли способ проверить литеральные параметры шаблона внешних функций в Bucklescript?

Редактировать: код, который у меня есть в настоящее время, выглядит следующим образом:

[@bs.module] external i18n : (string, Js.Dict.t(string)) => string = "format-message";

let _getDisplayText = (~suffix, ~difference) => {
  let differenceStr = string_of_int(difference);
  let i18nMapArg = Js.Dict.empty();
  Js.Dict.set(i18nMapArg, "difference", differenceStr)
  switch (suffix) {
  | Character => i18n([%bs.raw {|`{difference, plural, one {# character} other {# characters}}`|}], i18nMapArg)
  | None => i18n([%bs.raw {|`{difference, number}`|}], i18nMapArg)
  }
};

Неправильная подпись для i18n() - первый параметр должен быть именно литеральной строкой шаблона, а не простой строкой. Могу ли я убедиться, что первый аргумент переносится в литеральную строку шаблона JSтипобезопасным способом?

...