2016-05-12 1 views
0

У меня есть приложение Angular 2, использующее TypScript. Я хочу использовать JQuery-х $ для различных задач, таких как

$(document).ready(function(){  // throwing error: "[ts] Cannot find '$'. any" 
    console.log("loaded up!"); 
    $("#main_div").niceScroll(); 
}) 

Я импортированы jQuery.min.js файл в мое приложение через index.html так:

<script src="app/libs/jquery.min.js"></script> 

Однако я ничего не импортировали в файл app.component.ts в отношении кода jQuery. Нужно ли, и если да, то как его импортировать?

import { GenericService } from './services/Generic.service';  // did not do this 
import $ from './libs/jquery.min.js';        // tried this but does not work 

Удивительно, но мой код работал вчера, как я разрабатывал, но не сегодня, когда я побежал npm start. Может ли кто-нибудь помочь мне в этом процессе импорта?

ответ

0

Просто сделать

typings install jquery --ambient --save 

установить файл определения типа. Удалите import $ from './libs/jquery.min.js'; и добавить ссылку на файл d.ts в верхней части вашей app.component.ts так:

/// <reference path="../typings/jquery.d.ts"/> 

Поскольку вы уже загрузив файл Javascript в вашем индексе вам нужно только типизации для него, так машинопись знает , что эти имена и методы jQuery существуют.

+0

Что делает '/// <ссылочный путь = "../ typings/jquery.d.ts" /> 'do? Кажется, что это прокомментировано, поэтому я смущен. –

+0

Он сообщает компилятору TypeScript включить этот файл при поиске определений типов. [Подробнее здесь] (https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html) – rinukkusu

+1

@KangzeHuang Дополнительная информация здесь: https://github.com/Microsoft/TypeScript-Handbook/blob /master/pages/Namespaces%20and%20Modules.md#-reference-ing-a-module – Dinistro

0

Просто добавьте Jquery с типизации:

typings install jquery --ambient --save 

Тогда в индексе:

<script src="bower_components/jquery/dist/jquery.min.js"></script> 

И обычно машинопись будет делать работу :)