How to Cast a JSON Object Inside of TypeScript Class?
Last Updated :
06 Dec, 2024
Casting a JSON object to a TypeScript class involves converting a plain JSON object (which lacks methods and proper typing) into an instance of a class that includes all the defined methods and type safety of that class.
Types of Objects in TypeScript
- Plain Objects: When parsing JSON data using the JSON.parse() method, we get a plain object, not a class instance.
- Class Objects: A class object is an instance of a TypeScript class with defined properties, constructors, and methods.
Example Scenario
Data 1: TypeScript Class Definition
Suppose we have a TypeScript class defined on the client-side:
JavaScript
class Todo {
userId: number;
id: number;
title: string;
done: boolean;
getTitle() {
return this.title;
}
isDone() {
return this.done;
}
}
Data 2: JSON Object
We have a JSON object stored locally in our project:
JavaScript
{
"userId": 1,
"id": 1,
"title": "Add Info about the new project",
"done": true
}
1. Using Object.assign() Method
First, we import the JSON object in our TypeScript file. We can then use the Object.assign() method to clone the JSON object into a Todo class object.
JavaScript
import jsonObhect from './todo.json';
// Defining our Todo class
class Todo {
userId: number;
id: number;
title: string;
done: boolean;
getTitle() {
return this.title;
}
isDone() {
return this.done;
}
}
// Object.assign() will clone jsonData into
// Todo class object Storing the new class
// object in a typescript variable
let newTodo = Object.assign(new Todo(), jsonData);
// Logging the output onto the console
console.log(newTodo);
console.log(newTodo.getTitle());
Output
Todo {
userId: 1,
id: 1,
title: 'Add Info about new project',
done: true
}
Add Info about new project
2. Using class-transformer
For more complex JSON objects or arrays of complex JSON objects, the class-transformer tool is more robust. It can transform plain JSON objects into TypeScript class instances.
Installation: Install the class-transformer package using npm:
npm install -g class-transformer
This method will take two parameters, the first parameter will be an instance of the Todo class and the second parameter is the JSON object imported from our local project. First, we will have to import the method from the class-transformer tool in our TypeScript file, so that TypeScript knows which method to use. Again, we have stored my JSON file in the same directory as that of my TypeScript file.
JavaScript
import jsonObhect from './todo.json';
import { plainToClass } from "class-transformer";
// Defining our Todo class
class Todo {
userId: number;
id: number;
title: string;
done: boolean;
getTitle() {
return this.title;
}
isDone() {
return this.done;
}
}
// plainToClass method will convert
// JSON data to Todo class object
// Storing the new class object in
// a typescript variable
let newTodo = plainToClass(Todo, jsonData);
// Logging the output to the console
console.log(newTodo);
console.log(newTodo.isDone());
Output
Todo {
userId: 1,
id: 1,
title: 'Add Info about new project',
done: true
}
true
Note: Converting JSON to TypeScript Interfaces
Another useful tool for converting JSON data to TypeScript interfaces is json2ts. This tool generates TypeScript interfaces from JSON objects. For the given JSON object, we can generate the following TypeScript interface:
TypeScript
declare module namespace {
export interface RootObject {
userId: number;
id: number;
title: string;
done: boolean;
}
}
Similar Reads
How to Convert an Object to a JSON String in Typescript ? In TypeScript, an object is a collection of related data and functionality. Objects are made up of properties and methods. Properties describe the object, methods describe what it can do.Table of ContentUsing JSON.stringify()Using json-stringify-safe libraryUsing a Custom Serialization FunctionUsing
5 min read
How to Initialize a TypeScript Object with a JSON-Object ? To initialize a TypeScript Object with a JSON-Object, we have multiple approaches. In this article, we are going to learn how to initialize a TypeScript Object with a JSON-Object. Below are the approaches used to initialize a TypeScript Object with a JSON-Object: Table of Content Object.assign Type
3 min read
How to Cast Object to Interface in TypeScript ? In TypeScript, sometimes you need to cast an object into an interface to perform some tasks. There are many ways available in TypeScript that can be used to cast an object into an interface as listed below: Table of Content Using the angle bracket syntaxUsing the as keywordUsing the spread operatorU
3 min read
How to Create an Object in TypeScript? TypeScript object is a collection of key-value pairs, where keys are strings and values can be any data type. Objects in TypeScript can store various types, including primitives, arrays, and functions, providing a structured way to organize and manipulate data.Creating Objects in TypescriptNow, let
4 min read
How to Convert an Array of Objects into Object in TypeScript ? Converting an array of objects into a single object is a common task in JavaScript and TypeScript programming, especially when you want to restructure data for easier access. In this article, we will see how to convert an array of objects into objects in TypeScript.We are given an array of objects a
3 min read
How to Check the Type of an Object in Typescript ? When working with TypeScript, understanding how to check the type of an object is crucial for ensuring type safety and maintaining code integrity. TypeScript, being a statically typed superset of JavaScript, provides several approaches to accomplish this task as listed below.Table of ContentUsing th
3 min read
How can I Define an Array of Objects in TypeScript? In TypeScript, the way of defining the arrays of objects is different from JavaScript. Because we need to explicitly type the array at the time of declaration that it will be an Array of objects. In this article, we will discuss the different methods for declaring an array of objects in TypeScript.
6 min read
How to Specify that a Class Property is an Integer in TypeScript ? Specifying that a class property is an integer in TypeScript involves using type annotations or specific TypeScript features to define the data type of the property. Below are the approaches used to specify that a class property is an integer in TypeScript: Table of Content By using Type AnnotationB
2 min read
How to Declare Specific Type of Keys in an Object in TypeScript ? In TypeScript, object definitions can include specific key-value types using index signatures. You can declare specific types of keys in an object by using different methods as listed below:Table of ContentUsing Mapped TypesUsing InterfaceUsing Inline Mapped Types with typeUsing Record Utility TypeU
3 min read
How to Convert String to JSON in TypeScript ? Converting a string to JSON is essential for working with data received from APIs, storing complex data structures, and serializing objects for transmission. Below are the approaches to converting string to JSON in TypeScript:Table of ContentConvert String to JSON Using JSON.parse()Convert String to
5 min read