UNPKG

@boristype/types

Version:

<h1 align="center">WT Types</h1> <div align="center"> Typescript типы для WebSoft HCM.

128 lines (111 loc) 7.01 kB
type XmlMultiElemObject<T, F = never> = { /** * Возвращает документ, к которому относится данный объект. */ Doc: XmlDocument; /** * Возвращает массив, указанный в атрибуте `FOREIGN-ARRAY` текущего элемента. */ ForeignArray: F[]; /** * Возвращает `true` если существует хоть один соответствующий множественный элемент. */ HasValue: boolean; /** * Возвращает массив всех соответствующих множественных элементов. * Сам по себе данный метод не несет особого смысла, поскольку объект * {@link XmlMultiElem} сам является массивом, но, в сочетании с одноименным * методом объекта {@link XmlElem} позволяет создавать универсальный код для * работы как с обычными так и множественными элементами. * @example * ``` * // Возвращает массив из всех элементов profession_id * const array = candidate.profession_id.Instances; * Возвращает массив из единственного элемента location_id * const array = candidate.location_id.Instances; * ``` */ Instances: F[]; /** * Всегда возвращает `false`. * Аналогичный метод объекта {@link XmlElem} всегда возвращает `false`. * Это позволяет по конструкции вида `candidate.profession_id.IsMultiElem` определять * был ли элемент `profession_id` описан c атрибутом `MULTIPLE=1`. */ IsMultiElem: true; /** * Возвращает имя соответствующего множественного элемента. */ Name: string; /** * Возвращает родительский элемент текущего элемента. */ Parent: XmlDocument; /** * Возвращает константу на языке {@link XQuery} в виде последовательности * из значений соответствующих множественных элементов. */ XQueryLiteral: string; /** * Добавляет дочерний элемент и возвращает указатель на него. * Если текущий элемент создан по форме, то он должен быть простым массивом. * При этом аргументы для вызова функции не требуются. * Если текущий элемент является динамическим (то есть построенным без формы), * то добавляется дочерний динамический элемент с именем и типом, указанных в качестве аргументов. * @param {string} name - Имя дочернего элемента. * @param {string} type - Тип дочернего элемента. * @returns {XmlElem<T>} */ Add(name?: string, type?: string): XmlElem<T>; /** * Проверяет существует ли соответствующий множественный элемент с заданным значением. * @param {K} value - Заданное значение. */ ByValueExists<K>(value: K): boolean; /** * Удаляет все соответствующие множественные элементы. */ Clear(): void; /** * @deprecated * Удаляет все соответствующие множественные элементы. */ DeleteAll(): void; /** * Удаляет соответствующий множественный элемент с заданным значением. * Если таких элементов несколько, удаляет первый. * @throws {@link Error} В случае отсутствия таких элементов возвращает ошибку. */ DeleteByValue<T>(value: T): void | never; /** * Находит соответствующий множественный элемент с заданным значением ключевого поля. * Если такой элемент не найден, возвращает ошибку. * @param {string} value - Значение ключа. * @param {string} name - Имя элемента, являющегося ключом. Если имя ключа не указано, используется первичный ключ. * @returns {XmlElem<T>} Объект {@link XmlElem}. */ GetByKey<K>(value: K, name?: string): XmlElem<T>; /** * Ищет соответствующий множественный элемент с заданным ключевым элементом. * Если не находит, то добавляет новый дочерний элемент, и его ключевому полю присваивает заданное значение. * Возвращает ранее существовавший или вновь созданный дочерний элемент. * @param {K} value - Значение ключа. * @param {string} name - Имя элемента, являющегося ключом. Если имя ключа не указано, используется первичный ключ. * @returns {XmlElem<T>} Объект {@link XmlElem}. */ ObtainByKey<K>(value: K, name?: string): XmlElem<T>; /** * Находит элемент, относящийся к данному объекту по ключу. * В случае его отсутствия, добавляет элемент в соответствующую позицию по возрастанию ключа. * @param {K} value - Значение ключа. * @param {string} name - Имя элемента, являющегося ключом. Если имя ключа не указано, используется первичный ключ. * @returns {XmlElem<T>} Объект {@link XmlElem}. */ ObtainByKeySorted<K>(value: K, name: string): XmlElem<T>; /** * Ищет соответствующий множественный элемент с заданным значением. * Если не находит, добавляет новый элемент и присваивает ему заданное значение. * @param {K} value - Значение элемента. */ ObtainByValue<K>(value: K): XmlElem<T>; };