Версия 1.7 — Что нового
Основной пакет (@yamato-daiwa/es-extensions)
Критические изменения
Работа с массивами
Изменение 3-его параметра в getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne
и
getIndexOfArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne
В 3-ем параметре типа «объект»,
свойство mustThrowErrorIfElementNotFoundOrMoreThan1
было переименовано в
mustThrowErrorIfElementNotFoundOrMatchesAreMultiple.
- Причина
- Прежнее имя вводит в заблуждение: «or more than1» можно ошибочно интерпретировать как то, что в исходном массиве не должно быть более одного элемента. Теперь же «or matches are multiple» («... или совпадений несколько») однозначно передаёт, что элементов не должно быть более одного именно среди удовлетворяющих предикату.
- Потребуются редактирование Вашего исходного кода, если
- В Вашем коде при вызове функций
getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne
илиgetIndexOfArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne
используется 3-ий параметр. - Миграция
- Используя соответствующую функциональность редактора кода или интегрированной среды разработки,
замените
mustThrowErrorIfElementNotFoundOrMoreThan1
наmustThrowErrorIfElementNotFoundOrMatchesAreMultiple
во всех файлах проекта.
Класс «RawObjectDataProcessor»
Переименование объекта локализации
В соответствии с обновлёнными соглашениями по именованию, объект локализации
RawObjectDataProcessorLocalization__English
был переименован в
rawObjectDataProcessorLocalization__english
.
Аналогичные изменения были применены и к другим объектам локализациям.
Браузерный JavaScript (@yamato-daiwa/es-extensions-browserjs)
Критические изменения
Работа с DOM
Изменения параметров и условий бросания ошибок в функциях getExpectedToBeSingleDOM_Element
и getExpectedToBeSingleChildOfTemplateElement
Прежде, единственный параметр типа «объект» имел
полиморфное опциональное свойство
context
, которое, если было определено, должно было иметь
тип
Element,
Document,
или производные от них.
Теперь это свойство было заменено на contextElement
, которое
также полиморфное, но теперь имеет
тип ParentNode | Readonly<{ selector: string; }>
, благодаря чему стало
возможно в качестве контекста указать не только контекстный элемент, но и его
селектор.
Однако, когда указан селектор контекстного элемента, ему должен соответствовать
только один элемент, иначе будет брошена
ошибка (DOM_ElementRetrievingFailedError
если
контекстный элемент не найден, или UnexpectedEventError
,
если найдено два и более элементов).
Поскольку и Element
, и Document
унаследованы
от ParentNode
, то тип нового свойства совместим со старым.
- Причина
- Унификация API указания контекстного элемента — свойство
contextElement
типаParentNode | Readonly<{ selector: string; }>
теперь используется в параметрах нескольких функций и даже за пределами библиотеки YDEE (например, в библиотеке для фронтенд-разработки Yamato Daiwa Frontend. - Потребуются редактирование Вашего исходного кода, если
- Вы пользовались свойством
context
параметра функцийgetExpectedToBeSingleDOM_Element
илиgetExpectedToBeSingleChildOfTemplateElement
. - Миграция
- Переименуйте свойство
context
вcontextElement
во всех файлах проекта. Если Вам будет удобнее указать селектор контекстного элемента вместо самого контекстного элемента, то теперь Вы можете выполнить соответствующий рефакторинг с использованием новейшего API, при этом селектору контекстного элемента должен соответствовать ровно один элемент, в противном случае будет брошена ошибка.
Обработка событий
Изменение API функции addLeftClickEventHandler
Как и ранее, функция имеет единственный параметр типа «объект», однако его свойства изменились:
- targetElement
- Теперь является полиморфным.