2017-05-18 5 views
0

注釈リポジトリにないes6-promisifyのJSパッケージのタイプ定義を作成しようとしています。 promisifyインポートが注釈されていることを私は私を行う方法import promisify = require('es6-promisify')、とインポート考えると、今TypeScript:タイプ宣言をインポートステートメントにバインドする方法

declare function promisify(original: (...args: any[]) => any, settings: any): Promise<any> 

export = promisify 
// export interface promisify { } // or should I do an interface? 

活字体を教える:DefinitelyTypedの例を見てみるとTS Deep Dive/Declaration Filesを次のように、私は私がvendor.d.tsに私のプロジェクトに保存された粗製の注釈を作成しましたvendor.d.tsに?現在、tscは返信しますCould not find a declaration file for module 'es6-promisify'. 'promisify.js' implicitly has an 'any' type.私はを消化しようとしていますが、これまでには失敗しています。

異なる言い方をしています:宣言ファイルをインポートから解決するためにTypeScriptで使用されるメカニズムは何ですか? XY problem警告:多分私は間違ったことをやっているので、vendor.d.tsをしてはいけませんか?多分、es6-promisifyがDTにない理由がありますか? "noImplicitAny": trueとのtscをうれしくするという私の目標に到達するためのより良い方法と矛盾することは自由です。ありがとう:)

+1

すでに 'vendor.d.ts'の名前を' es6-promisify.d.ts'に変更し、タイプ定義を含むディレクトリを 'tsconfig'の' compilerOptions.typeRoots'に追加しましたか? 'compilerOptions.typeRoots'を変更している場合は、'。/ node_modules/@ types'を追加することを忘れないでください。次を参照してください。https://www.typescriptlang.org/docs/handbook/tsconfig-json.html –

+0

@SayanPalありがとうございます。それを試みましたが、私はまだ何か間違っている必要があります、私のインポートは、vscodeで型を取得し続けていません。問題のある場所のトラブルシューティングに役立つ方法やツールはありますか? (config?declaration?something else?) –

+0

TypeScriptのバージョンを更新して、vscodeから正しいバージョンを参照してください。 vscodeが、バージョンミスマッチのためにいくつかの誤検出を引き起こしている可能性があります。これは、最後に実行時の問題ではない可能性があります。エラーは、TypeScriptコードでモジュールをインポートする方法によっても発生する可能性があります。あなたがそのコード断片を投稿した方が良いでしょう。 –

答えて

1

次の私のために働く。

es6-promisifiy.d.ts

declare module "es6-promisify" { 
    export default function promisify(original: (...args: any[]) => any, settings: any): Promise<any> 
} 

は、用法:

import promisify from "es6-promisify"; 
... 
const xyz = promisify(whatever, whatever); 

tsconfig.json:

{ 
    "compilerOptions": { 
     ... 
     "typeRoots": [ 
      "./node_modules/@types", 
      "./custom_typings" 
     ] 
    }, 
    ... 
} 

は、この情報がお役に立てば幸いです。

+0

よろしく!うまくいきます(入力が悪い場合を除きますが、今度はそれを繰り返すことができます)。私が宣言した宣言が 'declare module'ブロックに' export'をラップしていないように見えます。しかし、私はなぜ '[mkdirpの型付け](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/mkdirp/index.d.ts)が '宣言モジュール'なしで動作するのか理解できません。再度、感謝します! –

+1

@RonanJouchet厳密にはわかりませんが、これは私が使用しているモジュールシステム(および解像度)によって決まります。しかし、再び、私は確信していません。多分新しい質問を開こうとすると、私はまた、答えを知って興味があるように、私は購読する:)楽しい –

関連する問題