TypeScript 2.0.3を実行していますが、"target": "es2015",
。で始めました
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import assert = require('assert');
しかし、Visual Studioでは、Import with 'require' cannot be used when targeting ECMAScript 6 or higher.
その後、私は試した:
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import {assert} from 'assert';
生成するError TS2305 Module '"assert"' has no exported member 'assert'.
私も試しました:
/// <reference path="../../node_modules/@types/node/index.d.ts" />
import assert from 'assert';
生成するError TS1192 Module '"assert"' has no default export.
Node 10以上では、 strict assert を使用することをお勧めします。これは named import としてインポートでき、_as assert
_:
_import { strict as assert } from 'assert';
assert.ok(true);
assert(true);
_
strict
は、組み込みのassert
モジュールからの named export です。名前付きエクスポートは、単一の_module.exports
_ CommonJSエクスポートを使用し、それをデフォルトインポートとしてインポートすることから生じる問題の多くの問題を回避します。 TypeScript 2.7では、それを支援するために _--esmoduleinterop
_ オプションが追加されました。
残りは2016年に書かれた古い答えです:
_import * as assert from 'assert';
assert.ok(true);
assert(true);
_
_node_modules
_と同じディレクトリからTypeScriptを実行する場合は、_/// <reference ...
_を追加する必要さえありません。
@Ryan Cavanaughがコメントで指摘したように、この構文は、ES6モジュールがネイティブにサポートされている環境で動作するという仮定を促します(そのような環境はまだ存在しません)。真実ではありません。名前空間と関数の両方として使用できるES6モジュールを使用することはできないため、この構文は実際にもっとよく一致すると思います。
_import assert = require('assert');
_
ただし、TypeScriptオプションを使用する必要があります
_ --target es6 --module commonjs
_
_Import with 'require' cannot be used when targeting ECMAScript 6 or higher
_エラーを取り除くため。必要な場合は、_--target es5
_オプションのみを使用することもできます。
まず、Node.js
のTypeScript
定義をインストールします
npm i @types/node
次に、assert
モジュールをインポートできます:-)
import * as assert from 'assert';
私は同じ問題を抱えていて、 power-assert に切り替えました。
import assert from 'power-assert'