Angular2 RC5 导入第 3 方 JS 库:摊牌

Angular2 RC5 Importing 3rd Party JS Library: Showdown

我在导入 Showdown 作为供应商时遇到问题。当我编译时,我在浏览器控制台中得到 showdown is not defined 。由于它是一个供应商包,我不认为我可以在 app.module.ts 中导入它。我需要为其声明自定义类型吗?包裹都在js。我在 Angular2 RC5 上 运行。谢谢!

home.service.ts

import 'showdown/dist/showdown';

declare var showdown: any;

private extractData(res: Response) {
   let body      = res.json();
   var converter = new showdown.Converter(),
   originalBody  = window.atob(body.content),
   body.title    = converter.makeHtml(title);
}

vendor.browser.ts

import 'showdown/dist/showdown';

我对 Showdown 不熟悉,但是如果你想在代码中导入它,你需要有类型定义文件。如果你使用 TypeScript 2.0,你可以简单地从 npmjs.org 安装它。我刚刚检查过 - 他们在@types 组织中有 Showdown 的类型定义:https://www.npmjs.com/search?q=%40types%2Fshowdown

只是 运行 npm i @types/showdown --save-dev.

如果您使用较旧的 TypeScript,请使用 Typings 安装声明。 不要忘记在 index.html.

中为 Showdown 添加脚本标签

在此示例应用程序中,我隐含地使用了 JQuery,但不需要导入它:

https://github.com/Farata/angular2typescript/tree/master/chapter2/auction

解决方案是使用 Yakov Fain 提到的类型

import {Converter} from "showdown/dist/showdown";

const converter = new Converter();
var body.title = converter.makeHtml(title);