TypeScript ConstructorParameters<Type> Utility Type (original) (raw)

Last Updated : 22 Jul, 2024

The **TypeScript ConstructorParameters utility type extracts the parameter types from a constructor function Type. It enhances type safety by enabling the creation of instances with correct constructor arguments, ensuring functions use the precise types expected by the constructor.

**Syntax

type ConstructorParametersType = ConstructorParameters;

**Parameters:

**Example 1: Extracting Constructor Parameters for GFG Class

In this example, we define a class GFG with a constructor that accepts two string parameters. Using ConstructorParameters, we extract these parameter types. We then create a createGFG function that utilizes these types to instantiate GFG objects with varying parameter values.

JavaScript `

// Define a class and its constructor class GFG { constructor(name: string, course: string) { this.name = name; this.course = course; } name: string; course: string; }

// Extract parameter types of the constructor type GFGConstructorParams = ConstructorParameters;

// Create a function that creates an instance of the class function createGFG(...params: GFGConstructorParams): GFG { return new GFG(...params); }

const GFG1 = createGFG("GeeksforGeeks", "Java"); const GFG2 = createGFG("gfg", "Python");

console.log(GFG1); console.log(GFG2);

`

**Output:

GFG { name: 'GeeksforGeeks', course: 'Java' } GFG { name: 'gfg', course: 'Python' }

**Example 2: Extracting Constructor Parameters for Rectangle Class

In this example, we create a Rectangle class with a constructor accepting two numbers: width and height. By using ConstructorParameters, we obtain the parameter types [number, number]. We then craft a createRectangle function using these types to generate Rectangle instances with distinct dimensions.

JavaScript `

// Define a class and its constructor class Rectangle { constructor(public width: number, public height: number) { } }

// Extract parameter types of the constructor type RectangleConstructorParams = ConstructorParameters;

// Create a function that creates an instance of the class function createRectangle(...params: RectangleConstructorParams): Rectangle { return new Rectangle(...params); }

const rect1 = createRectangle(5, 10); const rect2 = createRectangle(8, 6);

console.log(rect1); console.log(rect2);

`

**Output:

Rectangle { width: 5, height: 10 } Rectangle { width: 8, height: 6 }