class-transformer का परिचय: यह क्या है और क्यों ज़रूरी है
class-transformer TypeScript और JavaScript के लिए एक शक्तिशाली लाइब्रेरी है जो सामान्य (plain) JavaScript ऑब्जेक्ट्स को क्लास इंस्टेंस में बदलने और वापस बदलने की सुविधा देती है। यह एक बुनियादी समस्या को हल करती है: जब आप API, डेटाबेस या JSON फ़ाइलों से डेटा लेते हैं, तो आपको बिना मेथड और टाइप वाले सादे ऑब्जेक्ट मिलते हैं। class-transformer इन डेटा को "जीवंत" बनाती है, उन्हें वैलिडेशन, ट्रांसफॉर्मेशन और सीरियलाइज़ेशन के साथ पूर्ण क्लास ऑब्जेक्ट में बदल देती है।
मुख्य उपयोग के परिदृश्य:
- API से JSON को टाइप किए गए क्लास ऑब्जेक्ट में बदलना — उदाहरण के लिए, REST API से रिस्पॉन्स मिलने के बाद आप JSON को अपने मॉडल के इंस्टेंस में बदल सकते हैं।
- डेटा वैलिडेशन और ट्रांसफॉर्मेशन — डेकोरेटर की मदद से बता सकते हैं कि कौन से फ़ील्ड अनिवार्य हैं, किन्हें बदलना है (जैसे स्ट्रिंग को नंबर या तारीख में)।
- ऑब्जेक्ट को JSON में सीरियलाइज़ करना — क्लास इंस्टेंस को वापस सादे ऑब्जेक्ट में बदलना ताकि उन्हें क्लाइंट को भेजा जा सके या सेव किया जा सके।
- नेस्टेड ऑब्जेक्ट और ऐरे के साथ काम करना — लाइब्रेरी नेस्टेड डेटा स्ट्रक्चर को रिकर्सिव रूप से बदल सकती है।
class-transformer का उपयोग अक्सर class-validator (वैलिडेशन के लिए) और लोकप्रिय फ्रेमवर्क जैसे NestJS, TypeORM और MikroORM के साथ किया जाता है।
इंस्टॉलेशन
लाइब्रेरी को npm या yarn के माध्यम से इंस्टॉल करें:
npm install class-transformer --save
या, यदि आप yarn का उपयोग कर रहे हैं:
yarn add class-transformer
TypeScript में डेकोरेटर का उपयोग करने के लिए, tsconfig.json फ़ाइल में एक्सपेरिमेंटल डेकोरेटर सपोर्ट चालू करें:
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}
डेकोरेटर के सही काम के लिए reflect-metadata इंस्टॉल करने की भी सलाह दी जाती है:
npm install reflect-metadata --save
और इसे अपने एप्लिकेशन की शुरुआत में इम्पोर्ट करें (आमतौर पर index.ts या main.ts फ़ाइल में):
import 'reflect-metadata';
कोड उदाहरण के साथ त्वरित शुरुआत
चलिए एक सरल यूज़र मॉडल बनाते हैं और JSON डेटा को क्लास इंस्टेंस में बदलते हैं।
import { plainToClass, Expose, Type } from 'class-transformer';
import 'reflect-metadata';
// User क्लास को परिभाषित करें
class User {
@Expose()
id: number;
@Expose()
firstName: string;
@Expose()
lastName: string;
@Expose()
@Type(() => Date)
createdAt: Date;
// क्लास का मेथड — ट्रांसफॉर्मेशन के बाद ही उपलब्ध
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}
// API से डेटा का उदाहरण (plain object)
const plainUser = {
id: 1,
firstName: 'राहुल',
lastName: 'वर्मा',
createdAt: '2024-01-15T10:30:00Z'
};
// plain object को User क्लास इंस्टेंस में बदलें
const userInstance = plainToClass(User, plainUser);
console.log(userInstance instanceof User); // true
console.log(userInstance.getFullName()); // "राहुल वर्मा"
console.log(userInstance.createdAt); // Date object: Tue Jan 15 2024 13:30:00 GMT+0300
जैसा कि आप देख सकते हैं, हमें मेथड और सही टाइप वाला पूरा क्लास ऑब्जेक्ट मिला (तारीख का स्ट्रिंग Date ऑब्जेक्ट में बदल गया)।
class-transformer के मुख्य तरीके और फंक्शन
1. plainToClass
क्या करता है: एक या अधिक सादे (plain) ऑब्जेक्ट को निर्दिष्ट क्लास के इंस्टेंस में बदलता है। यह सबसे अधिक उपयोग किया जाने वाला तरीका है।
पैरामीटर: