w3resource

TypeScript – Check if a number is odd

TypeScript Advance Types: Exercise-5 with Solution

Write a TypeScript function that accepts a parameter of type number and returns a boolean indicating whether the number is odd. Use a type guard to check and ensure the input is a valid number.

Sample Solution:

TypeScript Code:

// Function 'isOdd' that checks if a number is odd
function isOdd(num: number): boolean {
  // Type guard to check if 'num' is a finite number
  if (typeof num === "number" && isFinite(num)) {
    return num % 2 !== 0; // Check if the remainder is not zero (indicating an odd number)
  } else {
    return false; // Return false for non-numeric or infinite values
  }
}

// Test the 'isOdd' function
console.log("Is 7 is odd?",isOdd(7)); 
console.log("Is 20 is odd?",isOdd(20)); 
console.log("Is -5 is odd?",isOdd(-5)); 
console.log("Is ABC is odd?",isOdd("ABC"));

Explanations:

In the exercise above -

  • First, we define a function "isOdd()" that takes a parameter 'num' of type number.
  • Inside the function, we use a type guard (typeof num === "number" && isFinite(num)) to check if num is both of type number and a finite number (not NaN, Infinity, or -Infinity).
  • If the type guard passes, we use the expression num % 2 !== 0 to check if num is an odd number (i.e., its remainder when divided by 2 is not zero).
  • If 'num' is not a valid number (fails the type guard) or is even, the function returns false.
  • Finally, we test the "isOdd()" function with different numeric and non-numeric values to demonstrate how it handles different cases.

Output:

"Is 7 is odd?"
true
"Is 20 is odd?"
false
"Is -5 is odd?"
true
"Is ABC is odd?"
false

TypeScript Editor:

See the Pen TypeScript by w3resource (@w3resource) on CodePen.


Previous: TypeScript interface, type, and union types.
Next: Extracting Numbers, Booleans, and Strings from a Mixed TypeScript Array.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.