Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将构造函数迁移到TypeScript_Javascript_Node.js_Typescript_Sails.js - Fatal编程技术网

Javascript 将构造函数迁移到TypeScript

Javascript 将构造函数迁移到TypeScript,javascript,node.js,typescript,sails.js,Javascript,Node.js,Typescript,Sails.js,因此,我有一个相当大的sails.js应用程序,我计划在未来几个月内将代码库迁移到TypeScript,我修改了sails moduleloader以使用ts节点(我可能很快就会打开一个pull请求),这一切都很好 问题是,我对我准备的打字稿不是很满意,我想知道是否有人有任何建议 在帆上,钩子看起来像这样: module.exports = function(sails) { return { initialize: function(next) { return nex

因此,我有一个相当大的sails.js应用程序,我计划在未来几个月内将代码库迁移到TypeScript,我修改了sails moduleloader以使用ts节点(我可能很快就会打开一个pull请求),这一切都很好

问题是,我对我准备的打字稿不是很满意,我想知道是否有人有任何建议

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

module.exports = function(sails) {
  return {
    initialize: function(next) {
      return next();
    }
  };
};
我最初想到的打字稿是

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

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

export = function(sails: any) {
  return new Hook(sails);
}
但是我觉得导出功能不是很好,而且存在一个问题,即sails绑定了范围,因此这将导致一些问题。解决方案是使用胖箭头,但我不是我提出的解决方案的超级粉丝

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

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

export = function(sails: any) {
  return new Hook(sails);
}
有什么建议吗


谢谢

我不确定您到底在寻找什么,但是如果您不想使用
类钩子
进行完全OOP,您也可以使用
接口钩子
。这样,您就可以保留原始代码,只需向其中添加一些类型

interface Hook {
  initialize(next: Function);
}

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