Sobes.tech
Middle

Αναφέρετε τους βοηθητικούς τύπους στο TypeScript.

sobes.tech AI

Απάντηση από AI

Οι τύποι βοηθητικών λειτουργιών στο TypeScript είναι ενσωματωμένοι τύποι που επιτρέπουν τη μετατροπή υπαρχόντων τύπων δεδομένων σε νέους τύπους, εκτελώντας διάφορες χρήσιμες λειτουργίες. Βοηθούν στην αύξηση της ευελιξίας και της επαναχρησιμοποίησης των τύπων, μειώνοντας την πλεονασμό στον κώδικα.

Βασικοί βοηθητικοί τύποι:

  • Partial<Type>: Δημιουργεί έναν νέο τύπο όπου όλα τα χαρακτηριστικά του Type γίνονται προαιρετικά.

    interface User {
      id: number;
      name: string;
      age: number;
    }
    
    type PartialUser = Partial<User>;
    // PartialUser θα είναι { id?: number; name?: string; age?: number; }
    
  • Readonly<Type>: Δημιουργεί έναν νέο τύπο όπου όλα τα χαρακτηριστικά του Type γίνονται μόνο για ανάγνωση.

    interface Point {
      x: number;
      y: number;
    }
    
    type ReadonlyPoint = Readonly<Point>;
    // ReadonlyPoint θα είναι { readonly x: number; readonly y: number; }
    
  • Pick<Type, Keys>: Δημιουργεί έναν τύπο επιλέγοντας ένα συγκεκριμένο σύνολο χαρακτηριστικών Keys από το Type.

    interface Product {
      id: number;
      name: string;
      price: number;
      description: string;
    }
    
    type ProductSummary = Pick<Product, 'id' | 'name' | 'price'>;
    // ProductSummary θα είναι { id: number; name: string; price: number; }
    
  • Omit<Type, Keys>: Δημιουργεί έναν τύπο εξαιρώντας ένα συγκεκριμένο σύνολο χαρακτηριστικών Keys από το Type.

    interface Order {
      id: number;
      productId: number;
      quantity: number;
      timestamp: string;
    }
    
    type OrderDetails = Omit<Order, 'timestamp'>;
    // OrderDetails θα είναι { id: number; productId: number; quantity: number; }
    
  • Exclude<Type, ExcludedUnion>: Δημιουργεί έναν τύπο εξαιρώντας από το Type εκείνα τα στοιχεία που μπορούν να ανατεθούν στο ExcludedUnion. Χρησιμοποιείται για ενώσεις (union types).

    type Colors = 'red' | 'green' | 'blue' | 'yellow';
    type PrimaryColors = Exclude<Colors, 'yellow'>;
    // PrimaryColors θα είναι 'red' | 'green' | 'blue'
    
  • Extract<Type, Union>: Δημιουργεί έναν τύπο επιλέγοντας από το Type εκείνα τα στοιχεία που μπορούν να ανατεθούν στο Union. Χρησιμοποιείται για ενώσεις.

    type AllAnimals = 'dog' | 'cat' | 'fish' | 'bird';
    type PetAnimals = Extract<AllAnimals, 'dog' | 'cat'>;
    // PetAnimals θα είναι 'dog' | 'cat'
    
  • NonNullable<Type>: Δημιουργεί έναν τύπο που εξαιρεί από το Type τις τιμές null και undefined.

    type MaybeString = string | null | undefined;
    type NotNullableString = NonNullable<MaybeString>;
    // NotNullableString θα είναι string
    
  • Record<Keys, Type>: Δημιουργεί έναν τύπο αντικειμένου, των ιδιοτήτων του οποίου έχουν κλειδιά από το Keys και τιμές τύπου Type.

    type CityPopulation = Record<string, number>;
    // CityPopulation θα είναι { [key: string]: number }
    
    const population: CityPopulation = {
      "Moscow": 12635466,
      "Saint Petersburg": 5381033,
    };
    
  • Parameters<Type>: Επιστρέφει μια πλειάδα (tuple) των τύπων των παραμέτρων της συνάρτησης Type.

    function greet(name: string, age: number): string {
      return `Hello, ${name}! You are ${age}.`;
    }
    
    type GreetParams = Parameters<typeof greet>;
    // GreetParams θα είναι [name: string, age: number]
    
  • ReturnType<Type>: Επιστρέφει τον τύπο της τιμής επιστροφής της συνάρτησης Type.

    function calculateSum(a: number, b: number): number {
      return a + b;
    }
    
    type SumResult = ReturnType<typeof calculateSum>;
    // SumResult θα είναι number
    
  • ConstructorParameters<Type>: Επιστρέφει μια πλειάδα ή πίνακα των τύπων των παραμέτρων κατασκευαστή της κλάσης Type.

    class MyClass {
      constructor(name: string, id: number) {}
    }
    
    type MyClassParams = ConstructorParameters<typeof MyClass>;
    // MyClassParams θα είναι [name: string, id: number]
    
  • InstanceType<Type>: Επιστρέφει τον τύπο ενός αντικειμένου της κλάσης Type.

    class AnotherClass {
      value: string;
      constructor(v: string) {
        this.value = v;
      }
    }
    
    type AnotherClassInstance = InstanceType<typeof AnotherClass>;
    // AnotherClassInstance θα είναι AnotherClass
    

Η χρήση των βοηθητικών τύπων καθιστά τον κώδικα πιο ασφαλή, πιο εύκολα συντηρήσιμο και πιο εκφραστικό, επιτρέποντας την αποτελεσματική διαχείριση σύνθετων τύπων δεδομένων.