2017-03-23 13 views
4

私のTypeScriptコンパイラではnoImplicitAnytrueに設定されています。 CommonJSの構文を必要と使用してfooためインポート変数の型を定義する方法

import * as foo from "bar";

私は定義された型にできる午前:私は次のようなインポートを使用する場合、私は明示的にfoo変数のタイプを定義しておりませんので、それはエラーがスローされます。

const foo: FooType = require("bar");

import * as ...構文を使用してfooための型を定義する方法はありますか?私はあなたのような何かを意味信じる

答えて

4

...

import * as foo: IFoo from "foo" 

または

import foo : IFoo from "foo" 

がいることは、正確ですか?

This was discussed, but ultimately decided against.

代わりに、それはあなたdeclare module 'bar'とはそれをあなたの適切な入力を与えることが推奨されました。それが完了すると、適切なタイピングでimport * as foo from "bar"にできるようになります。

See this issue for more details on the recommended approach

電位例:

untyped.d.ts

declare module "bar" { 
    const foo:IFoo; 
    export = foo; 
} 

tsconfig.json

{ 
    "compilerOptions": { 
     ... 
    }, 
    "include": [ 
     "untyped.d.ts", 
     "src/**/*.ts", 
     "src/**/*.tsx" 
    ] 
} 

名"untyped.d.ts"はここでは本当の意味がありません。個人的に私の個人的なプロジェクトのタイプのないモジュールのキャッチオールとしてそれを個人的に使用しています。あなたの気持ちが何であれ、自由に名前を付けてください。

P.S. includeではなくfiles配列プロパティを使用することもできますが、filesは一部の人には混乱しているexcludeプロパティを尊重しないため気にしません。 See the docs for details.

+0

お返事ありがとうございます。モジュール宣言はどこに置くのですか? (私がタイプ情報を追加するのに興味があるのは 'node_modules'のサードパーティの依存関係です) – mattnedrich

+0

@mattnedrichおそらく最も簡単な方法は、あなたのプロジェクトに' .d.ts'ファイルを作成し、そのファイルを 'あなたの 'tsconfig.json'の配列を含みます。その宣言をそのファイルに書きます。 – Paarth

+0

ありがとう!完全性のために、 '.d.ts'ファイルが' tsconfig.json'ファイルからどのようにインクルードされるかの例を追加してください。 – mattnedrich

関連する問題