Open In App

TypeScript Constraints

Last Updated : 07 Nov, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

TypeScript constraints are used in generic type declarations to restrict the types that can be used as type arguments for the generic. Constraints allow you to specify that a generic type parameter must meet certain criteria, such as implementing a particular interface, having a specific method, or extending a specific class. This ensures type safety and enhances code predictability.

Syntax:

function functionName<T extends ConstraintType>(param: T): ReturnType {
// Function implementation
}

Parameters:

  • T is the generic type parameter.
  • extends is used to specify the constraint.
  • ConstraintType is the type or interface that T must extend or implement.
  • param is the parameter that must be of type T.
  • ReturnType is the return type of the function.

Example 1: In this example, we are getting some parameters and we are restricting that parameter, which means the parameter value can be anything other than a number. and it returns the output according to their length method.

Javascript




function whatIsLength<Type extends { length: number }>
    (x: Type, y: Type) {
    if (x.length >= y.length) {
        return ("x is larger than y");
    } else {
        return ("x is smaller than y");;
    }
}
 
const ans = whatIsLength([4, 0], [8, 9, 0]);
console.log(ans);
 
const ans1 = whatIsLength("abcde", "bb");
console.log(ans1);


Output:

"x is smaller than y" 
"x is larger than y"

Example 2: In this example, we are giving numbers as a parameter and it is throwing error as numbers do not have length method. this is how we can limit the type.

Javascript




function whatIsLength<Type extends { length: number }>
    (x: Type, y: Type) {
    if (x.length >= y.length) {
        return ("x is larger than y");
    } else {
        return ("x is smaller than y");;
    }
}
 
const ans = whatIsLength([4, 0], [8, 9, 0]);
console.log(ans);
 
const ans1 = whatIsLength("abcde", "bb");
console.log(ans1);
 
// Errror as values are number
// and they do not have length method
const ans2 = whatIsLength(10, 12);
console.log(ans2);


Output:

"x is smaller than y"
"x is larger than y"
Argument of type 'number' is not assignable to parameter of type '{ length: number; }'.


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads