Javascript TypeScript es6 promise,如何匹配promise构造函数

Javascript TypeScript es6 promise,如何匹配promise构造函数,javascript,node.js,typescript,es6-promise,Javascript,Node.js,Typescript,Es6 Promise,试一试: init():Promise<mongodb.Db> { return new Promise<mongodb.Db>((resolve : (value?: R | Thenable<R>) => void, reject: (error?: any) => void) => { this.db = new mongodb.Db("test", new mongodb.Server("localhost",

试一试:

  init():Promise<mongodb.Db> {
    return new Promise<mongodb.Db>((resolve : (value?: R | Thenable<R>) => void, reject: (error?: any) => void) => {
      this.db = new mongodb.Db("test", new mongodb.Server("localhost", 12017));

      this.db.open((err, db) => {
        if (err) {
          reject(err);
        } else {
          resolve(db);
        }
      });
    });
  }

我做错了什么?我直接从Promise的类定义中复制的构造函数参数。尝试了很多很多不同的方法,但是没有一种有效。显然,因此产生了一个问题:)

ES6 promise构造函数采用一个函数,该函数将resolve和reject函数作为参数

一个简单的例子:

let executor = (resolve, reject) => {
   if(1>0) {
      resolve("1");
   } else {
      reject("0");
   };

let promise = new Promise<string>(executor);
let executor=(解析、拒绝)=>{
如果(1>0){
决议(“1”);
}否则{
拒绝(“0”);
};
让承诺=新承诺(执行人);

不确定这个定义是从哪里来的。 您的编译器目标是否设置为es6

lib.es6.d.ts

/**
 * Creates a new Promise.
 * @param executor A callback used to initialize the promise. This callback is passed two arguments: 
 * a resolve callback used resolve the promise with a value or the result of another promise, 
 * and a reject callback used to reject the promise with a provided reason or error.
 */
new <T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
/**
*创造新的承诺。
*@param executor用于初始化承诺的回调。此回调传递了两个参数:
*使用值或其他承诺的结果解析承诺时使用的解析回调,
*以及拒绝回调,用于以提供的原因或错误拒绝承诺。
*/
新(执行人:(决定:(价值?:承诺)=>无效,拒绝:(理由?:任何)=>无效)=>无效):承诺;
对我来说效果很好typescript 1.7.5,目标es6

这应该对你有用

return new Promise<mongodb.Db>((resolve: (value?: any) => void, reject: (reason?: any) => void) => {
...
 })
返回新承诺((解决:(值?:任意)=>无效,拒绝:(原因?:任意)=>无效)=>{
...
})

很抱歉,但这不起作用。由于某些原因,找不到构造函数。我的目标是模块commonjs和es5,因为我希望这在NodeJS中起作用。这是ES6承诺,如果您使用es5,您很可能使用第三方承诺库。它们通常采用相同的样式,但可能存在差异。请分享承诺你正在使用的图书馆。
return new Promise<mongodb.Db>((resolve: (value?: any) => void, reject: (reason?: any) => void) => {
...
 })