Tengo una propiedad que puede recibir un número entre 0 y 256. ¿Cómo escribir dicho rango en mecanografiado?

function foo(threshold:number){
//do stuff
}
0
DoneDeal0 28 may. 2020 a las 12:38

3 respuestas

La mejor respuesta

Debe utilizar el operador ||. Si una de las condiciones es incorrecta, la condición no ingresará a if:

    function foo(threshold: number):boolean {
      if (threshold < 0 || threshold > 256) {
        return false;
      }
        return true;
    }

Mira este código:

console.log(foo(-1)); // false
console.log(foo(5)); // true
console.log(foo(280)); // false

También puede usar con el operador &&, solo si ambas condiciones son verdaderas, entonces la condición ingresará if:

 function foo(threshold: number):boolean {
      if (threshold > 0 && threshold < 256) {
        return true;
      }
        return false;
    }


console.log(foo(-1)); // false
console.log(foo(5)); // true
console.log(foo(280)); // false
2
Pluto 28 may. 2020 a las 10:53

No lo escribirías realmente. Manejarías eso por separado:

function foo(threshold: number) {
  if (threshold < 0 || threshold > 256) {
    return;
  }
  // Whatever you want to do if threshold is OK
}
1
gqstav 28 may. 2020 a las 11:42

Si solo quieres comprobarlo en tiempo de ejecución:

Una versión más simple de la función de @ Plutón:

function foo(threshold: number): boolean {
    return 0 <= threshold && threshold <= 256;
}

Si desea que se verifique su tipo:

Inspirado en esta publicación de blog: https://basarat.gitbook.io/typescript/main- 1 / nominaltyping.

Enlace de zona de juegos mecanografiada

enum SmallIntBrand { _ = "" }
type SmallInt = SmallIntBrand & number;

function isSmallInt(n: number): n is SmallInt {
    return Number.isInteger(n) &&
        0 <= n &&
        n <= 255;
}

const a = 434424;
const b = 25;

function requiresSmallInt(n: SmallInt) {
    console.log("Received number: " + n);
}

// Neither of these compile, for none of them
// have checked the variable with 'isSmallInt'.
//requiresSmallInt(a);
//requiresSmallInt(b);

if (isSmallInt(a)) {
    requiresSmallInt(a);
}

if (isSmallInt(b)) {
    requiresSmallInt(b);
}
1
MelvinWM 28 may. 2020 a las 10:34