2016-06-10 2 views
0

Я хочу добавить недвижимость someString к интерфейсу JQueryStatic, поэтому я могу получить к нему доступ с помощью $.someString.Добавить объект в интерфейс JQueryStatic

В index.ts, у меня есть этот код:

interface JQueryStatic { 
    someString: string; 
} 

$.someString = "string"; 

$ имеет тип JQueryStatic, однако я получаю следующее сообщение об ошибке:

Property 'someString' does not exist on type 'JQueryStatic'.

ответ

1

Вы можете использовать в объявлении типа окружающей среды, которая расширяет объявления типа JQuery, как это:

declare interface JQueryStatic { 
    someString: string; 
} 

положить его в .d.ts где-нибудь в вашем коде и убедитесь, что он включен (или не исключен) в вашем tsconfig.json.

Почему это работает?

declare бит, что делает это «эмбиент» - как в «существует где-то JQueryStatic который имеет someString элемент». Машинопись умна и берет, что есть и другая JQueryStatic окружающей среды декларация в другом месте (в вашем случае типизация JQuery и «сливается» их вместе в одной декларации JQueryStatic интерфейса.

enter image description here

1

Существующий тип информации для $ находится в файле декларации (который вы, вероятно, скачали). Если вы хотите, чтобы объединить вашу новую декларацию интерфейса в существующий интерфейс, поместите объявление в jquery-extensions.d.ts файл:

interface JQueryStatic { 
    someString: string; 
} 

При необходимости добавить ссылку путь к этому новому файлу в верхней части кода:

/// <reference path="../path/to/jquery-extensions.d.ts" /> 
Смежные вопросы