首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ES6-承诺与打字记录?

如何使用ES6-承诺与打字记录?
EN

Stack Overflow用户
提问于 2015-09-05 00:26:37
回答 6查看 57.1K关注 0票数 49

我读过this SO question,但很难得到使用打字本的承诺。希望我们能有一个明确的指南。这是用于服务器/节点项目的。实际上,我使用的是最新的iojs,但目标是ES5作为输出。

代码语言:javascript
复制
$ tsd query es6-promise --action install --save
$ npm install --save es6-promise


// typescript code:

/// <reference path="../../typings/es6-promise/es6-promise.d.ts"/>

var Promise = require("es6-promise").Promise;
require('es6-promise').polyfill();

function test():Promise {
    var p:Promise = new Promise();
    return p;
}

这给出了错误:

代码语言:javascript
复制
Cannot find name 'Promise'.

//另一种办法是:

代码语言:javascript
复制
var p = new Promise<string>((resolve, reject) => {
    resolve('a string');
});


//error=> Untyped function calls may not accept type arguments.

从您自己的节点服务器端代码返回承诺的推荐方法是什么?

参考资料:

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-09-05 07:13:11

main.ts

代码语言:javascript
复制
import {Promise} from 'es6-promise';
const p: Promise<string> = new Promise (
   (resolve: (str: string)=>void, reject: (str: string)=>void) => {
      const a: string = "hello from Promise";
      resolve(a);
   }
 );
p.then((st) => {
  console.log(st);
});

tsconfig.json

代码语言:javascript
复制
{
    "compilerOptions": {
        "target": "es3",
        "module": "commonjs",
        "declaration": false,
        "noImplicitAny": false,
        "noLib": false
    },
    "filesGlob": [
        "./**/*.ts",
        "!./node_modules/**/*.ts"
    ],
    "files": [
        "./main.ts",
        "./typings/es6-promise/es6-promise.d.ts"
    ]
}

compileandrun.sh

代码语言:javascript
复制
#!/bin/sh
npm install es6-promise
tsd install es6-promise
tsc
node main.js
票数 52
EN

Stack Overflow用户

发布于 2016-11-14 23:51:42

以下内容是在v2.1.1+上进行的,目标设置为es5

通过安装async/await并将其添加到文件的顶部,我能够使用es6-promise的承诺:

代码语言:javascript
复制
global.Promise = require('es6-promise').Promise;

这是给tsconfig.json

代码语言:javascript
复制
"lib": [ "es2015.promise", "es5" ],

使用import { Promise }表单对我无效,因为其他库正在崩溃(例如: axios)

票数 15
EN

Stack Overflow用户

发布于 2017-07-19 17:00:29

我需要为一个不同的框架(具体来说,axios)填充它;我不需要实际创建我自己的承诺,所以这些解决方案都不适合我。幸运的是,如果隐藏得很好的话,答案很简单:

代码语言:javascript
复制
import { polyfill } from 'es6-promise'

polyfill();
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32408306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档