[解決済み] typescript サードパーティモジュールの宣言
質問
このようなサードパーティモジュールを宣言するにはどうしたらよいでしょうか。
をサードパーティーモジュールに追加します。
module.exports = function foo(){
// do somthing
}
を私のコードに追加してください。
import * as foo from 'foo-module'; // Can not find a declaration module for ...
foo();
解決方法は?
をチェックしてください。 サードパーティモジュールとの連携に関するドキュメント .
宣言をどのように書くかは、モジュールがどのように書かれ、何をエクスポートするかに大きく依存します。
いただいた例では、CommonJSのモジュール(
module.exports = ...
をエクスポートすることができないため、実際には有効なES6モジュールではありません。
をモジュールとして
(関数のメンバをエクスポートするか
デフォルト
関数)。
TypeScript 2.7+に対応したアップデート
追加された
esModuleInterop
コンパイラオプション
を使用すると、ES6互換性のないエクスポートを持つCommonJSモジュールに対して、以下に示す "namespace hack" を使用する必要がなくなります。
まず
esModuleInterop
の中で
tsconfig.json
(と一緒にデフォルトで含まれるようになりました)。
tsc --init
):
{
"compilerOptions" {
...
"esModuleInterop": true,
...
}
}
を宣言してください。
foo-example
における
.d.ts
のようなファイルを作成します。
declare module "foo-module" {
function foo(): void;
export = foo;
}
これで、望んだように名前空間としてインポートできるようになりました。
import * as foo from "foo-module";
foo();
またはデフォルトのインポートとして。
import foo from "foo-module";
foo();
旧来のワークアラウンド
を宣言することができます。
foo-example
における
.d.ts
のようなファイルを作成します。
declare module "foo-module" {
function foo(): void;
namespace foo { } // This is a hack to allow ES6 wildcard imports
export = foo;
}
そして、思い通りの輸入を。
import * as foo from "foo-module";
foo();
あるいはこんな感じ。
import foo = require("foo-module");
foo();
があります。 のドキュメントに、宣言ファイルに関する良い資料があります。 および一部 各種宣言ファイル用テンプレート .
関連
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
JSアレイループと効率解析の比較
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
vueディレクティブv-bindの使用と注意点
-
vue ディレクティブ v-html と v-text
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】ExpressJS : res.redirect()が期待通りに動かない?
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules