TypeScript 不允许算术运算符,但我不明白为什么



为什么TypeScript在这种情况下给出Operator '+' cannot be applied错误?数字类型基本上没有改变。我有一个不寻常的编码情况,我想删除number上的内置方法,如toExponential,但希望数学运算符仍然工作。是否有某种#pragma或其他东西让它工作?

let x: Omit<number, 'banana'> = 1;
let y: Omit<number, 'banana'> = 2;
let z = x + y;

+操作符对该类型不起作用。规范的相关部分:

4.19.2 +算子

二进制+运算符要求两个操作数都为Number基本类型或者枚举类型,或者at至少有一个操作数为Any类型或String基本类型。枚举类型的操作数为被视为具有基本类型Number。如果其中一个操作数为空值或未定义值,则对其进行处理84因为有另一个操作数的类型。如果两个操作数都是Number基本类型,则结果为Number基本类型的。如果一个或两个操作数为String基本类型,则结果为字符串基本类型。否则,结果为Any类型。

(强调我的)

来源:https://javascript.xgqfrms.xyz/pdfs/TypeScript%20Language%20Specification.pdf

最新更新