正在将构造函数函数迁移到TypeScript

Migrating constructor function to TypeScript

本文关键字:迁移 TypeScript 函数 构造函数      更新时间:2024-06-21

所以我有一个相当大的sails.js应用程序,我计划在接下来的几个月里将代码库迁移到TypeScript,我修改了sails模块加载器以使用ts节点(我可能很快就会打开一个pull请求),这一切都很好。

问题是,我对我提出的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);
}

有什么建议吗?

感谢

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

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