Búsqueda de sitios web

números - TypeScript no permitirá los operadores aritméticos, pero no entiendo por qué


¿Por qué TypeScript da el error Operator '+' cannot be applied en este caso? Los tipos de número son esencialmente los mismos. Tengo una situación de codificación inusual donde quiero eliminar los métodos incorporados en number, como toExponential, pero quiero que los operadores matemáticos sigan funcionando. ¿Hay algún tipo de #pragma o algo para que esto funcione?

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

Respuesta #1

El operador + no funciona en ese tipo. Sección relevante de la especificación:

4.19.2 El operador +

El operador binario + requiere que ambos operandos sean del tipo primitivo Number o de un tipo enum, o al menos que uno de los operandos sea del tipo Any o del tipo primitivo String. Los operandos de un tipo enum se tratan como si tuvieran el tipo primitivo Number. Si un operando es el valor null o undefined, se trata como si tuviera el tipo del otro operando. Si ambos operandos son del tipo primitivo Number, el resultado es del tipo primitivo Number. Si uno o ambos operandos son del tipo primitivo String, el resultado es del tipo primitivo String. De lo contrario, el resultado es del tipo Any.

(énfasis mío)

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