如何将Javascript文件导入Typescript

Jef*_*lle 5 javascript twitter-bootstrap typescript angular

我想知道如何从Typescript启动Twitter-Bootstrap.

$('.carousel').carousel()
Run Code Online (Sandbox Code Playgroud)

我必须实现jquery.d.ts来修复$ -sign调用,但是我仍然得到jlecery.d.ts中找不到.carousel()的错误.

我尝试将javascript捆绑到一个模块并像这样调用它.但它似乎没有用.这是我的代码:

carousel.d.ts

declare module 'carousel/carousel' {
    var start: any; 
    export = start;
}
Run Code Online (Sandbox Code Playgroud)

carousel.js

System.register('carousel/carousel', [], true, function () {
    var carousel = function () {
        function carousel() {
        }
        carousel.prototype.start = function () {
            $('.carousel').carousel();
        }
    }
    exports.carousel = carousel;
});
Run Code Online (Sandbox Code Playgroud)

app.ts

import {Component} from "angular2/core";
import {bootstrap} from 'angular2/platform/browser';
import {Carousel} from "carousel/carousel";

@Component({
    selector: "carousel",
    bindings: [CarouselComponent],
    templateUrl: 'carousel.html'
})

export class CarouselComponent {
    start() {
            carousel.start();
        }        
    }
}

bootstrap(CarouselComponent)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Ged*_*tis 3

问题是您没有 的类型定义carousel()。就像你提到的 - 它是 Twitter-Bootstrap 中的一个函数,但你只包含了jQuery 的类型定义(*.d.ts) 。您需要以相同的方式将它们包含在 Bootstrap 中。

您可以从 DefinitiveTyped 项目获取完整的 Bootstrap 绑定定义,可以从其GitHub获取,也可以作为NuGet 包获取。以下是重要部分:

interface CarouselOptions {
    interval?: number;
    pause?: string;
    wrap?: boolean;
    keybord?: boolean;
}

interface JQuery {
    carousel(options?: CarouselOptions): JQuery;
    carousel(command: string): JQuery;
}
Run Code Online (Sandbox Code Playgroud)