【发布时间】:2015-10-17 04:47:06
【问题描述】:
我正在使用带有 webpack 和 ES6 的 TypeScript。我正在尝试导入模块 Showdown 并使用它将降价转换为 HTML。这是我的app.ts 代码:
/// <reference path="../typings/tsd.d.ts" />
import 'zone.js';
import 'reflect-metadata';
import 'es6-shim';
import * as showdown from 'showdown';
import {Component, View, bootstrap} from 'angular2/angular2';
@Component({
selector: 'markdown-app'
})
@View({
templateUrl: '/app/markdownApp.html'
})
class MarkdownAppComponent {
public html: string;
private md: any;
constructor() {
this.html = '';
this.md = showdown.Converter();
}
public updateValue(val) {
this.html = this.md.makeHtml(val);
}
}
bootstrap(MarkdownAppComponent);
当我尝试将 TS 转换为 ES6 时,我收到以下错误:
ERROR in ./src/app/app.ts
(23,24): error TS2339: Property 'Converter' does not exist on type 'typeof Showdown'.
我正在使用 TSD 安装所有类型定义。 Angular 加载正常,但 Showdown 似乎遇到了麻烦。 Showdown 类型文件似乎是正确的(包括属性 Converter),据我所知,它加载得很好。
我在控制台中注销了 showdown 变量,以确保 Showdown 确实获得了导入程序,并且确实获得了导入程序,并且它具有 Converter 属性。
有什么想法吗?
【问题讨论】:
-
你没有用于摊牌的 typedef,是吗?如果你不这样做,那么就像
(<any>showdown).Converter() -
用 tsd 安装这个 def 可能更好 - github.com/borisyankov/DefinitelyTyped/tree/master/showdown
-
我确实安装了它们。我不小心链接了错误的仓库。我有一个带有 showdown/showdown.d.ts 的类型文件夹,所有这些都在 tsd.d.ts 中引用,我在上面列出的文件中引用了它。
-
(<any>showdown).Converter()不起作用。 @你还有其他想法吗? -
同样的错误。我从 Showdown 切换到 Marked,它完美无缺。不知道为什么。
标签: angularjs typescript showdown