[解決済み] カスタムTypeScript定義ファイル作成時に「Module 'name' resolves to an untyped module at...」というエラーが発生する。
質問
TypeScriptの定義がわかりません。
@type/{name}
が見つからないので、インストールしたNodeJSパッケージの一つに対して
d.ts
ファイルを作成し、そのファイルを
{project root}\typings
フォルダーに保存します。これが私のやり方です。
// My source code: index.ts
import Helper from 'node-helper-lib';
// My definition: \typings\node-helper-lib.d.ts
declare....(something else)
declare module 'node-helper-lib' {
class Helper { ... }
export = Helper;
}
しかし、Visual Studio Codeはこのエラーを出し続け、赤線が
declare module 'node-helper-lib'
:
[ts] 拡張のモジュール名が無効です。モジュール'node-helper-lib' は'{project}{path}で型付けされていないモジュールに解決されます。 path}node_modules}node-helper-lib}index.js' にある型付けされていないモジュールに解決されます。 に解決されます。
ライブラリが型付けされていないから、型付けを追加してもいいはずだ、というのは正論ではないでしょうか?
UPDATEしてください。
使っています。
- TypeScript。2.1.4
- Visual Studio コード。1.9.1
- Node JS: 6.9.4
- Windows 10 x64
どのように解決するのですか?
何度か試行錯誤の結果
augmentation
は、他のモジュール宣言と同じファイル内でモジュールを宣言することを意味します。
したがって、もし私たちが
型付けされていない
サードパーティのJavaScriptライブラリの定義ファイルを書きたい場合、1つだけ
declare module 'lib-name'
が必要で、'lib-name' はライブラリ名と正確に一致しなければなりません (package.json の "name" プロパティで見つけることができます)。
一方、サードパーティライブラリが
がすでに定義ファイル
.d.ts
が含まれており、その機能を拡張したい場合は、作成した別のファイルに追加の定義を記述します。これは
augmenting
.
例えば
// These module declarations are in same file, given that each of them already has their own definition file.
declare module 'events' {
// Extended functionality
}
declare module 'querystring' {
// Extended functionality
}
declare module '...' { ... }
誰かが同じ質問を持っている場合に備えて、私の発見をここに残しておきます。そして、私が何かを見逃しているならば、私を修正してください。
関連
-
[解決済み】Nodejs: Errorを解決する方法。ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] エラーです。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりません。
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。
-
[解決済み] TypeScript getting error TS2304: cannot find name ' require'.
-
[解決済み] モジュール 'module-name' の宣言ファイルが見つかりませんでした。'/path/to/module-name.js' は暗黙のうちに 'any' 型を持っています。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】AWS STS AssumeRoleへのアクセスを可能にする方法
-
[解決済み] テスト
-
[解決済み】MongoClient v3.0使用時、db.collectionは関数ではない
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?