124

私は Typescript の完全な初心者であり、Typescript で ES6 promise を使用できるかどうか、およびそれらを機能させるために何をしなければならないか疑問に思っています。ノード 0.11.14 を実行していますが、コンパイル中に「'Promise' という名前が見つかりません」というエラーが発生します。

4

9 に答える 9

130

現在の 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-promiseand を呼び出しtsc --initます。最初の npm install コマンドはpackage.json、依存関係として es6-promise を含めるように変更します。tsc --init はtsconfig.jsonファイルを作成します。あなたのために。

typescript ファイルで promise を使用できるようになりましたvar x: Promise<any>;。実行tsc -p .してプロジェクトをコンパイルします。エラーはないはずです。

于 2014-12-19T20:41:13.413 に答える
51

代替#1

targetおよびコンパイラ オプションを使用して、をインストールせずに にlib直接コンパイルします。(TypeScript でテスト済み)。lib セクションでは、 または のいずれかを使用します。es5es6-shim2.1.4es2016es2015.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 の型がプロジェクト全体で使用できることを意味します。typingstypingsdt~--global

こちらもご覧ください

https://github.com/Microsoft/TypeScript/issues/7788 - 名前 'Promise' が見つかりません & 名前 'require' が見つかりません

于 2016-07-05T20:46:14.350 に答える
25

TypeScript 2.0 の時点で、以下をtsconfig.json

"compilerOptions": {
    "lib": ["es5", "es2015.promise"]
}

これには、ターゲットを ES6 に設定しなくても、TypeScript に付属する promise 宣言が含まれます。

于 2016-09-28T13:52:55.193 に答える
13

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

于 2015-05-31T02:30:01.363 に答える
12

これはこれを行う最新の方法です。上記の回答は古くなっています。

typings install --global es6-promise

于 2016-06-20T13:37:04.337 に答える
5

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"、何もする必要はありません。

于 2016-11-15T14:25:33.623 に答える
-1

tsconfig.json の typeorm の問題を解決するには、次のプロパティを追加します: "strictPropertyInitialization": false

于 2021-04-21T17:27:21.050 に答える