打字AngularJs CommonJs常量
Typescript AngularJs CommonJs Constants
所以我有这样的场景,我选择了一个要构建的过滤器对象。过滤器列表存储在一个数组中:
app.constant("filters", () => <IFilterList>[
(value, label) => <IFilterObject>{ value: value, label: label }
]);
interface IFilterList {
[index:number]: (value?:string, label?:string) => IFilterObject
}
interface IFilterObject {
value: string,
label: string
}
这允许设置正在使用的过滤器的模块:
// somemodule.js
app.controller("SomeController", (filters, filterService) => {
var filter = filters[0]("this value", "this label");
filterService.change(filter);
});
正如你所看到的,用一个神奇的数字来做filters[0]
至少是很糟糕的。
在C#中,我会创建一个静态类,它是公共的,所以可以在任何地方使用。类似于:
public static class FilterNames
{
public const int NameFilter = 0;
}
如何在AngularJs和TypeScript中使用CommonJs模块系统进行同样的操作?
在我看来,你需要全局变量。。。真的是最好的方法吗?
您可以使用这些值生成一个枚举。
enum FilterType {
NAME,
AGE
}
默认情况下,枚举获得数值,因此第一个枚举获得数值0,第二个枚举获得值1,等等。
你可以这样使用它:
filters[FilterType.NAME]("this value", "this label");
枚举可以在另一个文件中,您可以将其导入到任何想要使用它的位置。您可以在此处了解有关TypeScript中枚举的更多信息。
相关文章:
- 如何捆绑commonjs模块,除非指定需要
- Javascript-在哪里放置常量,全局或本地
- JavaScript常量-作为参数传递或直接使用
- 如何创建js常量对象与"依赖/相对;价值观
- 为什么Javascript程序员更喜欢在代码中重复字符串作为常量,而不是使用枚举类型的对象
- 哪些浏览器支持javascript常量
- AMD应用程序在浏览器中的加载速度是否快于CommonJS应用程序
- 未终止的字符串常量JavaScript
- Gulp,浏览使用react作为CommonJS不起作用.React未定义
- 对CommonJS配置文件使用全局变量
- 如何生成带有双引号的常量名称,并带有grunt ng常量
- 如何在JSFiddle上使用CommonJS模块
- 使用在子模块内部的父模块上定义的常量's配置
- 只使用常量的静态javascript函数会被编译为常量吗
- Angular.js常量问题
- 何时在 JavaScript 中使用导出默认值和导出常量
- 如何使用默认函数导出为 commonjs 模块创建类型
- 针对常量求值的角度表达式
- 客户端服务器常量通信PHP
- 打字AngularJs CommonJs常量