例如来自ramda-adjunct
RA.isPositive(1); // => true
RA.isPositive(Number.MAX_VALUE); // => true
RA.isPositive(-Infinity); // => false
RA.isPositive(NaN); // => false
RA.isPositive('5'); // => false
谓词
isPositive(val: any): val is number
的类型为NaN, -Infinity, +Infinity
但是号码仍然包含{{1}},如何省略它们?
答案 0 :(得分:3)
您可以将您的要求视为处理primitive obsession并将此类数字封装到valueOf()
类型中,并在构造函数中使用相应的保护子句,并允许算术运算class FiniteNumber {
constructor(public value: number) {
if (!isFinite(value)) {
throw new RangeError(`Expecting finite number`);
}
}
valueOf() {
return this.value;
}
}
const n2 = new FiniteNumber(2);
console.log(n2); // → FiniteNumber { value: 2 }
console.log(1 + n2.value); // → 3
console.log(1 + <any>n2); // → 3
console.log(new FiniteNumber(NaN)); // → Uncaught RangeError: Expecting finite number
方法:
System.out.print("How many sides does die 1 have? ");
Die1 = Scan.nextInt();
System.out.print(Die1);
System.out.print("How many sides does die 2 have? ");
Die2 = Scan.nextInt();
System.out.print(Die2);
→通过TypeScript Playground执行代码。
答案 1 :(得分:1)
类型约束在TypeScript中的方式是不可能的。
您将需要针对这些特定值的运行时防护。