即使包含类型文件,Typescript 也会抛出类型上不存在的属性

ant*_*nus 6 angularjs typescript showdown

我正在使用带有 webpack 和 ES6 的 TypeScript。我正在尝试导入模块 Showdown 并使用它来将 Markdown 转换为 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);
Run Code Online (Sandbox Code Playgroud)

当我尝试将 TS 转换为 ES6 时,出现以下错误:

ERROR in ./src/app/app.ts
(23,24): error TS2339: Property 'Converter' does not exist on type 'typeof Showdown'.
Run Code Online (Sandbox Code Playgroud)

我正在使用 TSD 来安装所有类型定义。Angular 加载良好,但 Showdown 似乎遇到了麻烦。Showdown 类型文件似乎是正确的(包括属性转换器),据我所知,它加载得很好。

我控制台注销了showdown变量以确保 Showdown 确实获得了导入器,并且它确实获得了导入器,并且它具有 Converter 属性。

有任何想法吗?

Liz*_*ett 3

我遇到了类似的问题,我必须这样做:

this.md = new showdown.Converter();

代替

this.md = showdown.Converter();

看起来你不久前就解决了你的问题,但如果有人遇到这个问题,我想我会把我的解决方案放在这里。