Как импортировать файл JavaScript в angular2

Мне трудно понять, как импортировать javascript файл в проект angular2. Это файл, который не является модулем, отличным от npm, и единственными инструкциями, которые я смог найти, является использование npm, что здесь не вариант.

Я использую angular cli и в моем angular -cli.json файле у меня есть:

{
"apps": [
  "styles": [..],
  "scripts": ["../pathtomyjs/file.js"] 
]}

Я запускал ng build и ng, и когда я открываю свое приложение и смотрю на веб-консоль и пытаюсь ссылаться на функцию, которая находится в моем js файле, я могу сделать это успешно.

Пример в консоли:

var test = MyObject; 

и я получаю test = {};

Однако, когда я пытаюсь сделать

let test = MyObject;

в моем файле .ts файла. Я получаю:

home.component.ts (10,11): Cannot find name 'MyObject'.)

Не знаете, как это сделать в Angular2.

Спасибо!

Ответ 1

делать:

declare var MyObject: any;

let test = MyObject;

Или:

let test = (<any> MyObject);

Для jQuery:

declare var jQuery: any;

jQuery.ajax({ ... });

Ответ 2

Является ли это сторонней библиотекой? вы должны сообщить компилятору typescript, где находятся файлы определения типов. Обычно он выглядит в папке node_modules/@types. Например, если вы хотите использовать jQuery, вы должны установить необходимые файлы определения типов, выполнив:

npm install @types/jquery

Ответ 3

Я поместил свои js файлы в app/assets/scripts и загрузил их в index.html <script src="assets/scripts/foobar.js"></script>. Это для проекта ionic2/angular2.

В модуле вы должны определить свои функции, подобные этому, в глобальной области файла модуля

declare var myFancyFunction;

Ответ 4

Я глубоко погрузился в этот здесь:

Это отличный вопрос, и я рад, что вы спрашиваете, потому что мне жаль, что у меня не было того, что я собираюсь написать, когда впервые столкнулся с этой маленькой проблемой. Это проблема typescript/javascript и webpack, прежде чем проблема с angular. Я определенно планирую записать на мой блог как можно скорее.

Ваш сценарий:

Вы запускаете

npm install mathjs
  • Теперь вы пытаетесь использовать math.js из компонента:
  • Найти файл math.js dist js (node_modules/mathjs/dist/math.js) и ссылку, подобную этой

    import {mathjs} from "../../node_modules/mathjs/dist/math";

  • Но вы получите сообщение об ошибке "set --allowJS".. Вы делаете это вот так:

    Set --allowJS in config (tsconfig.json) { "compilerOptions": { "allowJs": true, ...

  • Теперь вы получаете:

ОШИБКА в.. / node_modules/mathjs/dist/math.js(12209,13): недоступна обнаружен код.

  1. Глядя в источник math.js, вы видите, что это старый школьный модуль, но нет корневой функции-обертки (одна функция приносит им все и в темноте связывает их..) (подробнее об этом позже).

Решение: установите файл типизации для целевой библиотеки lib (@types/mathjs)

подробнее...