2015-11-03 2 views
3

Я использовал stackoverflow How do you explicitly set a new property on `window` in TypeScript? для расширения окна. код выглядит следующим образом:Typcript: как объявить интерфейс при импорте библиотеки?

interface Window { appConfig: any; } 
window.appConfig = window.appConfig || {}; 

Все работает отлично.

Когда я добавить строку

import _ = require('lodash'); 

Я получаю сообщение об ошибке

TS2339 Ошибка: Свойство 'AppConfig' не существует на типа 'Окно'.

Как я могу исправить эту проблему?

Я работаю с машинописи 1.6.2

+0

для окна я обычно делаю это как-то вместо того, чтобы пытаться его расширить. '( window) .appConfig = ( window) .appConfig || {}; 'Здесь возможен дубликат http://stackoverflow.com/questions/12709074/how-do-you-explicitly-set-a-new-property-on-window-in-typescript – Tony

+0

, это не дубликат , Я не спрашиваю, как продлить окно. Я спрашиваю, почему в заявлении import появляется ошибка –

+0

вы пробовали сделать импорт над интерфейсом? возможно, lodash переписывает или создает свой собственный интерфейс для окна? – Tony

ответ

3

При использовании внешних модулей, интерфейсы, найденные в .ts файлы не будут объединены с интерфейсами, найденных в .d.ts файлах. Таким образом, в этом случае он не работает, потому что интерфейс Window в файле .ts не объединен с интерфейсом Window, найденным в lib.d.ts. Это связано с природой внешних модулей.

Чтобы это исправить, переместите ...

interface Window { appConfig: any; } 

... в файле определения (.d.ts).