在Angular中编写可链接函数的正确方法是什么?

时间:2018-08-28 04:09:10

标签: javascript angular typescript

我尝试为Angular应用编写自定义函数。 我遵循官方指南并创建了一个独立的图书馆。

我打算这样写可链接函数

var obj = {
  test : function(){ 
    console.log('1'); 
    return this; 
  },
  test2 : function(){ 
    console.log('2'); 
    return this; 
  }
}
obj.test().test2();

如何在Angular中导出和导入可链接方法?我应该编写此自定义函数的正确文件类型是什么?例如,可能是服务,模型还是组件?

谢谢

2 个答案:

答案 0 :(得分:1)

  

如何在Angular中导出和导入可链接方法

如果您关心推断类型的安全性,请使用一个类:

class Obj {
    test() {
        console.log(1);
        return this;
    }
    test2() {
        console.log(2);
        return this;
    }
}

new Obj().test().test2();
  

我应该编写此自定义函数的正确文件类型是什么?例如,可能是服务,模型还是组件?

在任何.ts文件中。只需导出例如:

export const obj = new Obj();

答案 1 :(得分:0)

库:Underscore.js

如果您愿意使用(小型)库,Underscore.js提供了chain()方法,可用于将调用链接在一起并返回结果。要使用或添加自定义函数,您可以创建 mixin ,它基本上是您自己的自定义下划线函数。

作为示例-使用一些JSON,将其映射,然后对项目应用自定义函数,然后显示一些内容:

示例代码

_.mixin({
  test_logging: function(stuff) {
    console.log(" * test()!");
    console.log({'stuff': stuff});
    return stuff;
  },
  test_message: function(stuff) {
    return JSON.stringify(stuff);
  }
});

var results = _.chain(data)
                .map(function(user) {
                    return {
                    'name': user.name,
                    'email': user.email,
                    'company': user.company
                  };
                })
                .test_logging()
                .test_message()
                .value();

JSFiddle Link