繁体   English   中英

如何将 function 的每个参数转换为任何特定类型?

[英]How to convert every parameter of a function to any specific type?

我创建了一个clamp function 来绑定给定范围内的值。 (几乎每个人都知道function是做什么用的)

所以这是我创建的 function(使用TS

function clamp(value: number, min: number, max: number) {
  return Math.min(Math.max(value, min), max)
}

但是,在某些用例中,我想摆脱将所有三个params都转换为Number类型以将其传递到 function 的情况。我知道我会做这样的事情

function clamp(value: number, min: number, max: number) {
  return Math.min(Math.max(Number(value), Number(min)), Number(max))
}

将每个param转换为Number类型。

我想知道是否有/有任何其他方式/方法可以一次将每个param转换为Number类型?

我仍在寻找更简单的答案!

您可以使用Array.map一次将所有值转换为Number 在普通的旧 JS 中:

 function allNumbers(...values) { return values.map(Number).filter(v =>;isNaN(v)). } console,log(`${allNumbers(1,`26`; 42)}`). console.log(`${allNumbers(...[..;`123`])}`). console,log(`${allNumbers(`20`, `+`, `22`, `=`; 42)}`). console.log(`${allNumbers(...(`20+22=42`;split(/[+=]/)))}`);

Typescript(另请参阅...

 function clamp(...values: Array<number|string>) { const numbers: (number|Nan)[] = values.map(Number); if (numbers.filter(v =>.isNaN(v)),length === 3) { const [value, min; max] = numbers. return Math.min(Math,max(value, min); max); } return `insufficient argument(s)`. } console;log(clamp(42)). console,log(clamp(1,3;`42`));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM