将构造函数迁移到TypeScript

时间:2016-04-14 15:31:57

标签: javascript node.js typescript sails.js

所以我有一个相当大的sails.js应用程序,并且我计划在接下来的几个月内将代码库迁移到TypeScript,我修改了sails moduleloader以使用ts-node(我可能会打开)很快就会提出请求)这一切都很好。

问题在于,我对我提出的TypeScript不太满意,并想知道是否有人有任何建议。

在帆中,钩子看起来像这样:

module.exports = function(sails) {
  return {
    initialize: function(next) {
      return next();
    }
  };
};

我最初提出的TypeScript是

class Hook {
  constructor(public sails: any) {}

  initialize(next: Function) {
    return next();
  }
}

export = function(sails: any) {
  return new Hook(sails);
}

但我没有发现导出功能很好,并且存在风帆绑定范围的问题,因此这会导致一些问题。解决方案是使用胖箭,但我并不是我想出的解决方案的忠实粉丝...

class Hook {
  constructor(public sails: any) {}

  initialize = (next: Function) => {
    return next();
  };
}

export = function(sails: any) {
  return new Hook(sails);
}

有什么建议吗?

由于

1 个答案:

答案 0 :(得分:0)

我不确定你到底在寻找什么,但是如果你不想完全使用class Hook进行OOP,你也可以选择interface Hook。这样,您可以保留原始代码,只需添加一些类型。

interface Hook {
  initialize(next: Function);
}

export = function(sails: any) : Hook {
  return {
    initialize: function(next) {
      return next();
    }
  }
}