Определение машинописного текста jQuery

Текущая версия определения jQuery Typescript указывает, что он содержит

Определения типов для jQuery 1.10.x/2.0.x

Означает ли это, что он содержит объединенную единую версию, охватывающую все версии между 1.10.x и 2.0.x?

Если да, то как обрабатываются устаревшие методы и изменения в сигнатурах методов?

Кроме того, как безопасно использовать эти определения, если вы ориентируетесь на версию jQuery ниже 2.0.x.

Например, вполне возможно, что новый метод появится в версии 2.0.3, но наш код в настоящее время нацелен на версию 1.x.x.

Typescript позволит мне вызвать этот новый метод (потому что он находится в jquery.t.ds), но вызов завершится ошибкой во время выполнения, потому что его нет в используемой версии фактической библиотеки jQuery.

Я чувствую, что мне здесь не хватает чего-то фундаментального.


person Matt Evans    schedule 20.12.2016    source источник


Ответы (2)


Он содержит определения для обеих версий. Это возможно из-за того, что между 1.9+ и 2.0 нет устаревших версий. Разница только в совместимости браузера (2.0 отказывается от поддержки IE7 и IE8, поэтому основной выпуск).

person phortx    schedule 20.12.2016

Я считаю, что вы правы насчет консолидированной версии. Взгляните на некоторые определения:

/**
 * A selector representing selector passed to jQuery(), if any, when creating the original set.
 * version deprecated: 1.7, removed: 1.9
 */
selector: string;
[index: string]: any;
[index: number]: HTMLElement;

Кажется, в более поздних версиях он сломается, если вы не прочитаете комментарии.

Если вы хотите «сломать» свою компиляцию, я считаю, что вам следует отредактировать этот файл определения (это не вариант в том, как я создаю свой проект) и удалить устаревшие/удаленные версии.

person rodrigogq    schedule 20.12.2016