是否有一种方法可以检查函数参数在Typescript运行之前是否有一个允许的值
Is there a way I can check a function parameter has an allowed value before runtime with Typescript?
我有一个用Typescript编码的AngularJS服务。我使用如下参数调用服务的函数setFalse('retrieve'):
class StateService implements IStateService {
state = [];
get = (property: string) => {
return this.state[property];
}
setFalse = (property: string) => {
this.state[property] = false;
}
setNull = (property: string) => {
this.state[property] = null;
}
setTrue = (property: string) => {
this.state[property] = true;
}
// more code here
}
是否有一些方法,我可以删除引号字符串"检索"的需要,使用常量或检查运行前使用的值?
是否有一些方法,我可以删除引号字符串"检索"的需要?
可以对重载进行简化,并提供该函数的许多不同版本。
//just to give the idea
function setFalse_retrieve(){ return setFalse('retrieve') }
这样做的好处是它确实是类型安全的,并且没有办法用错误的参数调用setFalse。缺点是有很多样板文件,你不能传递一个property
值,如果你想。
2。用常数?
Typescript有一个enum特性:
enum Properties { retrieve, frobnicate };
你现在可以在代码中使用Properties.retrieve
代替"retrieve",它将捕获枚举名称中的任何拼写错误。
Properties.retriev; // Error: The property 'retriev' does not exist on value of type 'typeof Properties'.
需要注意的是,Typescript让枚举值为整型,所以在调用Angular函数时,你需要将它们转换为字符串:
var enumProperty = Properties.retrieve; // 0
var strProperty = Properties[enumProperty]; // "retrieve"
枚举方法的缺点是,你可以在需要枚举值的地方传递任何数字,并且在运行时不会检测到错误(不要这样做):
var x:Property = 10; // :(
3。在运行前使用常量或检查正在使用的值
Typescript在函数常量上有函数重载,但是你只能用它来根据输入来专门化返回类型,而不是把你的有效输入限制在一组常量上。也就是说,您仍然需要有一个接受任何字符串的通用大小写,这不是您想要的。相关文章:
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何检查函数是否将运行或可用
- 检查在使用节点运行程序时是否给出ARGV
- 检查grunt是否在详细模式下运行
- 是否可以从javascript文件中将量角器作为模块运行
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- 是否可以在node.js依赖项上运行脚本
- stopPropagation是否还会阻止同一元素上的其他处理程序运行
- 什么决定了 Node.js 应用是否保持运行
- 是否可以从在Firefox或IE的网页中运行的Javascript启动Windows进程
- 将函数分配给javascript中的变量是否运行该函数
- 流星 - 检查您是否运行了 2 个版本的 React
- GWT 动画在从 websocket 调用时是否运行
- 在JS中是否有可能从浏览器的控制台中检测是否运行了任何JS ?
- 当子类继承并挂载父类时,父类是否运行生命周期方法?
- Node是否运行所需模块中的所有代码?
- 如何通过Office .js查看Office AddIn主机是否运行Outlook应用
- 如何检测Chrome检查元素是否运行
- 在整个脚本完成解析之前是否运行javascript函数调用
- 记住之前是否运行过javascript,如果是[EnjoyHint.js]就不要再运行它