Как я могу использовать google.visualization для Angular CLI? - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь использовать Google Charts в проекте Angular CLI (7.2.3), но сталкиваюсь с проблемой, заставляющей печатать работать.

Сначала я установил печатания с помощью этой команды (обас флагом -dev и без него):

npm install --save-dev @ types / google.visualization

После этого intellisense сразу начинает работать в VisualStudio Code и я не получаю никаких выделенных ошибок при создании простого теста, подобного следующему:

const chartBoxStyle: google.visualization.ChartBoxStyle = {};

Однако, когда я пытаюсь выполнить сборку, запустив ng build , я получаю этоошибка:

ошибка TS2503: не удается найти пространство имен 'google'.

Я попытался добавить это в свой файл без удачи:

declare const google: any;

В моем файле tsconfig.json есть следующее для typeRoots, и я вижу там папку google.visualization:

"typeRoots": ["node_modules/@types"]

Любая помощь будет принята с благодарностью, поскольку у меня нет идей о том, как продвигаться дальше.

1 Ответ

0 голосов
/ 18 февраля 2019

Сводка

Проблема в свойстве "types" в файле ./src/tsconfig.app.json.

Даже если корневой файл ./tsconfig.json устанавливает "typeRoots" в ["node_modules/@types"], *Файл 1010 * отключает включение этих типов, устанавливая его собственное свойство types в пустой массив.

Решение

Откройте ./src/tsconfig.app.json и внесите одно из двух изменений:

  • Удалить свойство "types": []";это скажет компилятору включить все пакеты typeRoots.

  • Либо добавьте типы, которые вы хотите использовать, в массив "types": []".

Последний вариант будет выглядеть следующим образом:

"types": [
  "google.visualization"
]

Подробности

ng build считывает свою конфигурацию из файла ./angular.json.

Этот ./angular.json файл устанавливает "tsConfig" в "src/tsconfig.app.json".

Этот ./src/tsconfig.app.json файл устанавливает свое свойство "types" в пустой массив.

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "types": []  <------------------------------- empty array
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}

Это проблема, потому что, как документация TypeScript гласит : «Если указаны типы, будут включены только перечисленные пакеты.»

...