【问题标题】:Typescript throws a property does not exist on type even with type file included即使包含类型文件,Typescript 也会抛出类型上不存在的属性
【发布时间】: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,是吗?如果你不这样做,那么就像(&lt;any&gt;showdown).Converter()
  • 用 tsd 安装这个 def 可能更好 - github.com/borisyankov/DefinitelyTyped/tree/master/showdown
  • 我确实安装了它们。我不小心链接了错误的仓库。我有一个带有 showdown/showdown.d.ts 的类型文件夹,所有这些都在 tsd.d.ts 中引用,我在上面列出的文件中引用了它。
  • (&lt;any&gt;showdown).Converter() 不起作用。 @你还有其他想法吗?
  • 同样的错误。我从 Showdown 切换到 Marked,它完美无缺。不知道为什么。

标签: angularjs typescript showdown


【解决方案1】:

我遇到了类似的问题,我不得不这样做:

this.md = new showdown.Converter();

而不是

this.md = showdown.Converter();

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

【讨论】:

    猜你喜欢
    • 2016-08-27
    • 1970-01-01
    • 2023-04-02
    • 2018-08-17
    • 1970-01-01
    • 2023-02-06
    • 2020-03-06
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多