தமிழ்

டைப்ஸ்கிரிப்ட்டின் `import type` தொடரியலை ஆராய்ந்து, உருவாக்க நேரங்களை மேம்படுத்தி, இயக்க நேரப் பிழைகளைத் தடுக்கவும். வகை-மட்டும் இறக்குமதிகள் மற்றும் அவற்றின் நன்மைகளைப் பற்றி அறியுங்கள்.

டைப்ஸ்கிரிப்ட் இறக்குமதி வகை: வகை-மட்டும் இறக்குமதி அறிவிப்புகளின் ஆழமான பார்வை

ஜாவாஸ்கிரிப்ட்டின் ஒரு சூப்பர்செட் ஆன டைப்ஸ்கிரிப்ட், வலை மேம்பாட்டின் மாறும் உலகிற்கு நிலையான வகையிடலைக் கொண்டுவருகிறது. இதன் முக்கிய அம்சங்களில் ஒன்று, மற்ற தொகுதிகளிலிருந்து வகைகளை இறக்குமதி செய்யும் திறன் ஆகும். இருப்பினும், வகை சரிபார்ப்புக்கு மட்டுமே பயன்படுத்தப்படும் வகைகளை இறக்குமதி செய்வது இறுதி ஜாவாஸ்கிரிப்ட் தொகுப்பில் தேவையற்ற குறியீட்டிற்கு வழிவகுக்கும். இதைக் கையாள, டைப்ஸ்கிரிப்ட் import type தொடரியலை அறிமுகப்படுத்தியது. இந்த வலைப்பதிவு இடுகை import type பற்றி விரிவாக ஆராய்ந்து, அதன் நோக்கம், பயன்பாடு, நன்மைகள் மற்றும் சாத்தியமான எச்சரிக்கைகளை விளக்கும்.

import type என்றால் என்ன?

import type என்பது ஒரு டைப்ஸ்கிரிப்ட்-குறிப்பிட்ட தொடரியல் ஆகும், இது ஒரு தொகுதியிலிருந்து அதன் இயக்க நேர மதிப்புகள் எதையும் இறக்குமதி செய்யாமல், வகை வரையறைகளை மட்டும் இறக்குமதி செய்ய உங்களை அனுமதிக்கிறது. மற்றொரு தொகுதியிலிருந்து ஒரு வகையை வகை குறிப்புகளுக்கு அல்லது வகை சரிபார்ப்புக்குப் பயன்படுத்த வேண்டியிருக்கும் போது இது மிகவும் பயனுள்ளதாக இருக்கும், ஆனால் அதன் மதிப்புகள் எதையும் இயக்க நேரத்தில் அணுக வேண்டிய அவசியமில்லை. இது நேரடியாக ஒரு சிறிய தொகுப்பு அளவிற்கு பங்களிக்கிறது, ஏனெனில் ஜாவாஸ்கிரிப்ட் கம்பைலர் இறக்குமதி செய்யப்பட்ட தொகுதியை வகை தகவல்களுக்காக மட்டுமே பயன்படுத்தினால், தொகுப்பின் போது அதைத் தவிர்க்கிறது.

import type ஐ ஏன் பயன்படுத்த வேண்டும்?

import type ஐப் பயன்படுத்த பல బలமான காரணங்கள் உள்ளன:

import type ஐப் பயன்படுத்துவது எப்படி

import type க்கான தொடரியல் நேரடியானது. நிலையான import கூற்றைப் பயன்படுத்துவதற்குப் பதிலாக, நீங்கள் இறக்குமதி செய்ய விரும்பும் வகையைத் தொடர்ந்து import type ஐப் பயன்படுத்துகிறீர்கள். இதோ ஒரு அடிப்படை உதாரணம்:

import type { User } from './user';

function greetUser(user: User): string {
  return `Hello, ${user.name}!`;
}

இந்த எடுத்துக்காட்டில், நாம் ./user தொகுதியிலிருந்து User வகையை இறக்குமதி செய்கிறோம். நாம் greetUser செயல்பாட்டில் வகை குறிப்பிற்காக மட்டுமே User வகையைப் பயன்படுத்துகிறோம். User தொகுதியின் மதிப்புகள் இயக்க நேரத்தில் அணுக முடியாதவை.

import type ஐ வழக்கமான இறக்குமதிகளுடன் இணைத்தல்

type என்ற முக்கிய சொல்லைப் பயன்படுத்தி ஒரே கூற்றில் import type ஐ வழக்கமான இறக்குமதிகளுடன் இணைக்கலாம்:

import { someValue, type User, type Product } from './module';

function processUser(user: User): void {
  // ...
}

console.log(someValue);

இந்த நிலையில், someValue ஒரு வழக்கமான மதிப்பாக இறக்குமதி செய்யப்படுகிறது, அதே நேரத்தில் User மற்றும் Product வகைகள் மட்டுமேயாக இறக்குமதி செய்யப்படுகின்றன. இது ஒரே தொகுதியிலிருந்து மதிப்புகள் மற்றும் வகைகள் இரண்டையும் ஒரே கூற்றில் இறக்குமதி செய்ய உங்களை அனுமதிக்கிறது.

அனைத்தையும் வகைகளாக இறக்குமதி செய்தல்

நீங்கள் ஒரு தொகுதியிலிருந்து மதிப்புகள் எதையும் இறக்குமதி செய்யாமல் அனைத்து வகைகளையும் இறக்குமதி செய்ய வேண்டுமானால், நீங்கள் namespace இறக்குமதி தொடரியலைப் பயன்படுத்தலாம் import type உடன்:

import type * as Types from './types';

function processData(data: Types.Data): void {
  // ...
}

இங்கே, நாம் ./types தொகுதியிலிருந்து அனைத்து வகைகளையும் Types namespace இல் இறக்குமதி செய்கிறோம். பின்னர் நாம் Types. முன்னொட்டைப் பயன்படுத்தி வகைகளை அணுகலாம்.

பல்வேறு திட்ட வகைகளில் எடுத்துக்காட்டுகள்

`import type`-இன் நன்மைகள் பல்வேறு திட்ட வகைகளுக்குப் பொருந்தும். இதோ சில எடுத்துக்காட்டுகள்:

எடுத்துக்காட்டு 1: ரியாக்ட் கூறு (Component)

குறிப்பிட்ட வகைகளைக் கொண்ட props-ஐப் பெறும் ஒரு ரியாக்ட் கூறைக் கருத்தில் கொள்ளுங்கள்:

import React from 'react';
import type { User } from './user';

interface Props {
  user: User;
}

const UserProfile: React.FC<Props> = ({ user }) => {
  return (
    <div>
      <h2>User Profile</h2>
      <p>Name: {user.name}</p>
      <p>Email: {user.email}</p>
    </div>
  );
};

export default UserProfile;

இந்த ரியாக்ட் எடுத்துக்காட்டில், `import type { User } from './user';` என்பது `User`-இன் வகை வரையறை மட்டுமே இறக்குமதி செய்யப்படுவதை உறுதிசெய்கிறது, இது தொகுப்பு அளவை மேம்படுத்துகிறது. நாம் 'user' தொகுதியின் மதிப்புகளை நேரடியாகப் பயன்படுத்தவில்லை; அந்த தொகுதியில் வரையறுக்கப்பட்டுள்ள 'User' *வகையை* மட்டுமே பயன்படுத்துகிறோம்.

எடுத்துக்காட்டு 2: Node.js பின்தளம் (Backend)

ஒரு Node.js பின்தள பயன்பாட்டில், நீங்கள் தரவுத்தள மாதிரிகளை வகைகளாக வரையறுக்கலாம்:

import type { User } from './models';
import { createUser } from './db';

async function registerUser(userData: User): Promise<void> {
  await createUser(userData);
}

இங்கே, `import type { User } from './models';` என்பது `User` வகை மட்டுமே வகை சரிபார்ப்புக்கு தேவைப்பட்டால், முழு `models` தொகுதியையும் தொகுப்பில் சேர்ப்பதைத் தவிர்க்கிறது. `createUser` செயல்பாடு *இயக்க நேர* பயன்பாட்டிற்குத் தேவைப்படுவதால் அது இறக்குமதி செய்யப்படுகிறது.

எடுத்துக்காட்டு 3: ஆங்குலர் சேவை (Service)

ஒரு ஆங்குலர் சேவையில், ஒரு வகையைப் பயன்படுத்தும் ஒரு சேவையை நீங்கள் செலுத்தலாம் (inject):

import { Injectable } from '@angular/core';
import type { Product } from './product.model';
import { ProductService } from './product.service';

@Injectable({
  providedIn: 'root',
})
export class OrderService {
  constructor(private productService: ProductService) {}

  getFeaturedProducts(): Product[] {
    return this.productService.getProducts().filter(p => p.isFeatured);
  }
}

`Product` வகை என்பது `productService.getProducts()` முறை மூலம் திருப்பியளிக்கப்படும் தரவின் கட்டமைப்பை வரையறுக்கப் பயன்படுகிறது. `import type { Product } from './product.model';` ஐப் பயன்படுத்துவது, வகை தகவல் மட்டுமே இறக்குமதி செய்யப்படுவதை உறுதிசெய்கிறது, இது ஆங்குலர் பயன்பாட்டின் செயல்திறனை மேம்படுத்துகிறது. `ProductService` என்பது ஒரு *இயக்க நேர* சார்பு ஆகும்.

பல்வேறு மேம்பாட்டு சூழல்களில் import type ஐப் பயன்படுத்துவதன் நன்மைகள்

import type ஐப் பயன்படுத்துவதன் நன்மைகள் பல்வேறு மேம்பாட்டு அமைப்புகளில் பரவியுள்ளன:

சாத்தியமான எச்சரிக்கைகள்

import type பொதுவாக நன்மை பயக்கும் என்றாலும், கவனத்தில் கொள்ள வேண்டிய சில எச்சரிக்கைகள் உள்ளன:

import type ஐப் பயன்படுத்துவதற்கான சிறந்த நடைமுறைகள்

import type ஐ திறம்பட பயன்படுத்த, பின்வரும் சிறந்த நடைமுறைகளைக் கருத்தில் கொள்ளுங்கள்:

சர்வதேசமயமாக்கல் (i18n) மற்றும் உள்ளூர்மயமாக்கல் (l10n) கருத்தாய்வுகள்

சர்வதேசமயமாக்கல் (i18n) மற்றும் உள்ளூர்மயமாக்கல் (l10n) தேவைப்படும் திட்டங்களில் பணிபுரியும்போது, import type உங்கள் குறியீட்டை எவ்வாறு பாதிக்கலாம் என்பதைக் கருத்தில் கொள்வது அவசியம். மனதில் கொள்ள வேண்டிய சில குறிப்புகள் இங்கே:

பல்வேறு நாடுகளில் உள்ள எடுத்துக்காட்டுகள்

பல்வேறு நாடுகளில் உள்ள பல்வேறு சூழ்நிலைகளில் import type எவ்வாறு பயன்படுத்தப்படலாம் என்பதை விளக்கும் சில எடுத்துக்காட்டுகள் இங்கே:

முடிவுரை

import type என்பது டைப்ஸ்கிரிப்ட்டில் உள்ள ஒரு சக்திவாய்ந்த அம்சமாகும், இது ஒரு தொகுதியிலிருந்து அதன் இயக்க நேர மதிப்புகள் எதையும் இறக்குமதி செய்யாமல், வகை வரையறைகளை மட்டும் இறக்குமதி செய்வதன் மூலம் உங்கள் குறியீட்டை மேம்படுத்த அனுமதிக்கிறது. இது மேம்படுத்தப்பட்ட தொகுப்பு அளவுகள், குறைக்கப்பட்ட சுழற்சி சார்புகள், மேம்பட்ட செயல்திறன் மற்றும் சிறந்த குறியீடு தெளிவுக்கு வழிவகுக்கும். இந்த வலைப்பதிவு இடுகையில் கோடிட்டுக் காட்டப்பட்டுள்ள சிறந்த நடைமுறைகளைப் பின்பற்றுவதன் மூலம், நீங்கள் திறமையான மற்றும் பராமரிக்கக்கூடிய டைப்ஸ்கிரிப்ட் குறியீட்டை எழுத import type ஐ திறம்பட பயன்படுத்தலாம். டைப்ஸ்கிரிப்ட் தொடர்ந்து வளர்ச்சியடைந்து வருவதால், அளவிடக்கூடிய மற்றும் செயல்திறன்மிக்க பயன்பாடுகளை உருவாக்குவதற்கு import type போன்ற அம்சங்களைத் தழுவுவது மிகவும் முக்கியம்.