Определения Ambiant не загружаются после миграции Angular9 - PullRequest
0 голосов
/ 10 февраля 2020

Я только что перенес проект с Angular 8 на 9. Миграция прошла успешно, однако с тех пор похоже, что мои амбиентные типы больше не воспринимаются компилятором.

Мой файл vendor.d.ts выглядит как:

interface JQuery {
  select2(p?: any): JQuery;
  trumbowyg(options?: TrumbowygOptions | any, ...any): JQuery;
}
interface TrumbowygOptions {
  btns: string[][];
  autogrow?: boolean;
  autogrowOnEnter?: boolean;
  svgPath?: string;
  resetCss: boolean;
}

И на него ссылаются в моем основном tsconfig. json как это:

 "typeRoots": [
      "node_modules/@types",
      "src/app/vendor.d.ts"
    ],

Я застрял с ошибками вроде:

error TS2551: Property 'select2' does not exist on type 'JQuery<HTMLElement>'. Did you mean 'select'?

72     this._multiSelectJQuery.select2({ theme: 'bootstrap' });
                               ~~~~~~~

Я обнаружил, что в TS 3.6 введены более строгие проверки в отношении определений амбиентных типов. Я проводил различные тесты, например, использовал ключевое слово Declare (https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-6.html#ambient -classes-and-functions-can-merge )

1 Ответ

0 голосов
/ 10 февраля 2020

Как упомянуто здесь: https://github.com/angular/angular-cli/issues/16905

Добавление следующего фрагмента в мой tsconfig.app. json решило проблему:

"include": ["**/*.d.ts"]
...