JavaScript黑魔法之静态类型检查
2017-03-15 本文已影响40人
三生石上绛珠草
本文属于读别人代码的心得,本人没有任何原创之处。
js虽是一门动态类型语言,然而轻易即可实现实现静态类型检查
function __BuildStrongTypedFunction(returnType, argumentTypes, func) {
return function () {
if (argumentTypes.length !== arguments.length) {
throw new Error("The number of arguments does not match.");
}
for (var i = 0; i < argumentTypes.length; i++) {
argumentTypes[i].RequireType(arguments[i]);
}
var returnValue = func.apply(this, arguments);
returnType.RequireType(returnValue);
return returnValue;
}
}
以下是类型部分的定义
屏幕快照 2016-12-17 22.34.27.png 屏幕快照 2016-12-17 22.35.42.png