私は Typescript の完全な初心者であり、Typescript で ES6 promise を使用できるかどうか、およびそれらを機能させるために何をしなければならないか疑問に思っています。ノード 0.11.14 を実行していますが、コンパイル中に「'Promise' という名前が見つかりません」というエラーが発生します。
9 に答える
現在の lib.d.ts にはプロミスが定義されていないため、追加の定義ファイルが必要になるため、コンパイル エラーが発生します。
たとえば、(@elclanrs が言うように) es6-promise パッケージを、DefiniteTyped の定義ファイルと共に使用できます: es6-promise definition
その後、次のように使用できます。
var p = new Promise<string>((resolve, reject) => {
resolve('a string');
});
編集ES6 をターゲットにする場合 (TypeScript コンパイラを使用) は、定義なしで使用できます - もちろん、ランタイムに Promise が存在する必要があることに注意してください (したがって、古いブラウザーでは機能しません:)) 以下を追加/編集して、tsconfig.json
:
"compilerOptions": {
"target": "ES6"
}
編集 2 TypeScript 2.0 が出てくると、状況は少し変わります (ただし、上記は引き続き機能します) が、定義ファイルは以下のように npm を使用して直接インストールできます。
npm install --save @types/es6-promise
-ソース
edit3 タイプを使用するための詳細情報で回答を更新しています。
package.json
コンテンツのみを含むファイルを作成します{ }
(まだ package.json がない場合。npm install --save @types/es6-promise
and を呼び出しtsc --init
ます。最初の npm install コマンドはpackage.json
、依存関係として es6-promise を含めるように変更します。tsc --init はtsconfig.json
ファイルを作成します。あなたのために。
typescript ファイルで promise を使用できるようになりましたvar x: Promise<any>;
。実行tsc -p .
してプロジェクトをコンパイルします。エラーはないはずです。
代替#1
target
およびコンパイラ オプションを使用して、をインストールせずに にlib
直接コンパイルします。(TypeScript でテスト済み)。lib セクションでは、 または のいずれかを使用します。es5
es6-shim
2.1.4
es2016
es2015.promise
// tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": [
"es2015.promise",
"dom"
]
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
]
}
代替#2
NPM を使用して、タイプ organizationes6-shim
からをインストールします。
npm install @types/es6-shim --save-dev
代替#3
TypeScript 2.0 より前では、タイピングを使用して、 DefiniteTypedes6-shim
からグローバルにインストールします。
npm install typings --global --save-dev
typings install dt~es6-shim --global --save-dev
このtypings
オプションは、 を使用してグローバルnpm
にインストールしてから、 を使用して shim をインストールします。プレフィックスは、DefiniteTyped から shim をダウンロードすることを意味します。このオプションは、shim の型がプロジェクト全体で使用できることを意味します。typings
typings
dt~
--global
こちらもご覧ください
https://github.com/Microsoft/TypeScript/issues/7788 - 名前 'Promise' が見つかりません & 名前 'require' が見つかりません
TypeScript 2.0 の時点で、以下をtsconfig.json
"compilerOptions": {
"lib": ["es5", "es2015.promise"]
}
これには、ターゲットを ES6 に設定しなくても、TypeScript に付属する promise 宣言が含まれます。
node.js 0.12 以降 / typescript 1.4 以降を使用する場合は、次のようなコンパイラ オプションを追加するだけです。
tsc a.ts --target es6 --module commonjs
詳細: https://github.com/Microsoft/TypeScript/wiki/Compiler-Options
を使用する場合はtsconfig.json
、次のようにします。
{
"compilerOptions": {
"module": "commonjs",
"target": "es6"
}
}
詳細: https://github.com/Microsoft/TypeScript/wiki/tsconfig.json
これはこれを行う最新の方法です。上記の回答は古くなっています。
typings install --global es6-promise
A. "target": "es5"
TypeScript バージョン 2.0 未満を使用している場合:
typings install es6-promise --save --global --source dt
B. "target": "es5"
TypeScript バージョン 2.0 以降を使用している場合:
"compilerOptions": {
"lib": ["es5", "es2015.promise"]
}
C. を使用する場合"target": "es6"
、何もする必要はありません。
tsconfig.json の typeorm の問題を解決するには、次のプロパティを追加します: "strictPropertyInitialization": false