【发布时间】:2013-08-15 11:18:13
【问题描述】:
我写了一个小函数来更好地处理类型。
function evaluate(variable: any, type: string): any {
switch (type)
{
case 'string': return String(variable);
case 'number': return isNumber(variable) ? Number(variable) : -1;
case 'boolean': {
if (typeof variable === 'boolean')
return variable;
if (typeof variable === 'string')
return (<string>variable).toLowerCase() === 'true';
if (typeof variable === 'number')
return variable !== 0;
return false;
}
default: return null;
}
}
function isNumber(n: any): boolean {
return !isNaN(parseFloat(n)) && isFinite(n);
}
我尝试使用泛型,但不知道如何从泛型参数中获取类型。有可能吗?
【问题讨论】:
-
不是,不是。 TypeScript 的打字只是一个编译时特性。输出的 JavaScript 没有类型信息,也没有反射设施。您必须像在 JavaScript 中一样在代码中依赖旧的
typeof。 -
作为记录,您可以将布尔处理程序折叠到
return !!variable; -
@PeterWone 这会改变行为,目前只有
"true"(不区分大小写)会导致 true,但!!variable会导致所有非空字符串为 true。可以申请!!如果您愿意,可以到两个非字符串分支。
标签: generics types typescript