为TypeScript 1.8安装jQuery 2.2.4类型

时间:2016-09-01 11:30:08

标签: jquery typescript typescript-typings

我使用angular-cli设置Angular 2(RC4)并使用typings@0.8.1

我用

安装了jQuery

npm install jquery@2.2.4 --save

  

在package.json

中添加"jquery": "^2.2.4"

的打字

typings install dt~jquery --global --save

  

在typings.json中添加"jquery": "registry:dt/jquery#1.10.0+20160704162008"(注意:此类型适用于1.x和2.x版本!)

当我现在在任何TypeScript文件中使用import $ from 'jquery'import * as $ from 'jquery'时,tsc会返回:

  

[ts]无法找到模块' jquery'。

有人可以告诉我为什么吗?我做错了什么?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我在没有火箭科学的情况下解决了这个问题,就这样做了。似乎RC4在正确解决打字方面遇到了一些麻烦。但是因为我是一个软件开发人员并且所有角度相关的“RC东西”在最后一次变化很多,所以很难为任何RC解决这个问题,所以我决定做一下这样的旧学校:

declare var $: any;                 // <-- yep, that's it
declare var FlipClock: any;         // <-- same here

@Component({
  selector: 'my-component',
  moduleId: module.id,
  templateUrl: './template.html',
  styleUrls: ['./styles.css']
})

export class MyComponent implements AfterViewInit {
  @ViewChild('flipclock') flipClock: ElementRef;
  errors: any;

  constructor() {
  }

  ngAfterViewInit() {
    $(this.flipClock.nativeElement).FlipClock({  // <-- we must make sure that
      clockFace: 'TwentyFourHourClock'           //     at runtime $ and FlipClock
                                                 //     exists
    });
  }
}

要在运行时提供jQuery和FlipClock,我们只需在index.html中附加脚本:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>My ng2-rc4 app</title>
    <base href="/">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" href="vendor/flipclock/compiled/flipclock.css">
    <link rel="stylesheet" href="app/main.css">
  </head>

  <body>
    <my-app>Loading ...</my-app>

    <script src="/vendor/jquery/dist/jquery.min.js"></script>
    <script src="/vendor/flipclock/compiled/flipclock.min.js"></script>
  </body>
</html>