2016-05-16 8 views
0

私はshowdownjsとTypeScriptを使用しています。ライブラリの定義ファイルはDefinitelyTypedです。DefinitelyTyped定義ファイルを使用中にエラーが発生しました

問題は、私はこのライブラリが間違っていると思うことです。ドキュメントでは、コンバータをこのようにインスタンス化する必要があります。

var converter = new showdown.Converter(); 

しかし、活字体の定義にそうすることは、それが存在しないというエラーメッセージを生成 - .d.tsでの名前空間はShowdownですが、ライブラリはグローバルリテラルshowdownに存在するため。

定義は、下部にshowdownという名前のモジュールをエクスポートしますが、これは私のIDEによってピックアップされていないようです。

だから私の質問は:これは活字体が動作するようになっている方法である、またはそれは私が定義を固定しようとすると、DefinitelyTypedにプルリクエストを送信するための良いアイデアですか?ここで

は私が対決を使用しています方法の例です。 showdown.d.tsとして

import 'angular'; 
import showdown from 'showdown'; 

export class MarkdownConfig { 
    constructor($showdownProvider: any) { 
     showdown.extension('notice',() => { 
      return { 
       type: 'lang', 
       regex: /^(^\S+)\s+(>)\s+(.*)/gmi, 
       replace: (text: string, css: string, method: string, message: string) => { 
        let converter = new showdown.converter(); 
        return text.replace(/^(^\S+)\s+(>)\s+(.*)/gmi, 
          `<div class="notice notice-${css}">${message}</div>`); 
       } 
      }; 
     }); 
     $showdownProvider.loadExtension('notice'); 
    } 
} 
+0

どのようにあなたの中に 'showdown'パッケージをインポートしますコード? – Blackus

+0

上記のスニペットを掲載しました。しかし、私は '対決からの対決 '以外の方法を試した。その特定のインポート方法は、私が働いていることがわかっているものだけです。 – Ciel

+0

もちろん、魔法のように、誰かがそれを見るように尋ねる瞬間にエラーを表示しません... – Ciel

答えて

1

現在DefinitelyTypedでターゲットがバージョン0.3.1にある、と言う:

// Type definitions for Showdown 0.3.1 

私は今日、同じ問題に遭遇した、と対決1.4をターゲットとプル要求を発行しました.1 here。あなた.TSファイルで

github:tan9/DefinitelyTyped/showdown/showdown.d.ts#aaaafcf9ba0e3d0a769bad1bbd55fbd38fdfbf48 

その後:

PRがマージされて前に、あなたはこの場所から型定義をインストールすることができます

import * as showdown from 'showdown'; 

// register global extension 
showdown.extension('notice',() => {...}) 

// use converter option to specify extension 
let converter = new showdown.Converter({extensions: ['notice']}); 

// or use useExtension 
converter.useExtension('notice'); 
+0

PRがマージされました。これで、DefinitelyTypedリポジトリから定義をインストールできるようになりました。 – tan9

関連する問題