Μίλησε για μια πλήρη εφαρμογή σε Node.js/Express για την αυτοματοποίηση της branding των σελίδων πληρωμής.
Frontend
Εργασία 6: Γράψτε μια γενική λειτουργία που δέχεται ένα αντικείμενο με μια υποχρεωτική ιδιότητα name τύπου string και επιστρέφει μια συμβολοσειρά με το όνομα της οντότητας.
Πώς εργάστηκες με το Git: ποια ήταν η ροή branching, πώς κάνατε releases, πώς κάνατε hotfix;
Ποια είναι η διαφορά μεταξύ any και unknown στο TypeScript; Γιατί ο linter δεν παραπονιέται για το any, αλλά απαιτεί περιορισμό τύπου για το unknown;
/** * Εργασία 4: Μετατρέψτε τον δοσμένο τύπο `MaybeProps` ώστε όλες οι ιδιότητές του να είναι υποχρεωτικές. */ type MaybeProps = { a?: number; b?: string; };
Εργασία 2: Δεδομένων πολλαπλών δηλώσεων διεπαφής Todo παρακάτω, εξηγήστε τι συμβαίνει όταν αυτές υπάρχουν στην ίδια εμβέλεια. Συζητήστε πώς τις αντιμετωπίζει η TypeScript και συμπληρώστε το αντικείμενο `myTodo` για να ικανοποιεί τις απαιτήσεις της συγχωνευμένης διεπαφής Todo. ```typescript interface Todo { title: string; dueDate: Date; } interface Todo { description: string; completed: boolean; } interface Todo { priority: 'high' | 'medium' | 'low'; completed: string; } const myTodo: Todo = {}; ```
Εργασία 7: Υπάρχουν οι τύποι Alien και Human, που συνδυάζονται στον τύπο Person. Γράψτε μια συνάρτηση checkAlien που ελέγχει αν το Person που περνάει είναι εξωγήινος. Διορθώστε το σφάλμα TypeScript κατά την πρόσβαση στην ιδιότητα isAlien.
/** * Εργασία 3: Αναλύστε τη λειτουργία παρακάτω και διορθώστε τυχόν σφάλματα. Εξηγήστε τον ρόλο του τύπου `never` στη TypeScript. */ function throwError(): never { throw new Error('Ένα σφάλμα συνέβη'); } /** * Εργασία 4: Μετατρέψτε τον δοσμένο τύπο `MaybeProps` ώστε όλες οι ιδιότητές του να είναι υποχρεωτικές. */ type MaybeProps = { a?: number; b?: string; }; /** * Εργασία 5: Δημιουργήστε έναν γενικό τύπο `Container` που περιέχει μια μόνο ιδιότητα `value`. * Ο τύπος του `value` πρέπει να περιοριστεί σε `string` ή `number`. */ type Container<T> = { value: T; };
Έχεις βιώσει αρνητική εμπειρία σε μια ομάδα, όπως έντονες διαφωνίες στην ανασκόπηση κώδικα; Πώς θα ενεργούσες σε μια τέτοια κατάσταση;
Πες μου για τη χρήση του Astro: πώς το επέλεξαν, πώς διαχειρίζονται το περιεχόμενο;
/** * Εργασία 1: Γενικά και Ασφάλεια Τύπου Κλειδιού * Δημιουργήστε μια συνάρτηση `getProperty` που παίρνει ένα αντικείμενο και ένα κλειδί. * Χρησιμοποιήστε γενικούς τύπους για να διασφαλίσετε ότι η συνάρτηση είναι ασφαλής τύπου και ότι το κλειδί υπάρχει στο αντικείμενο. */ function getProperty<T extends Record<string, unknown>, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } getProperty('str', 'toString') /** * Εργασία 2: Δεδομένων πολλαπλών δηλώσεων διεπαφής Todo παρακάτω, εξηγήστε τι συμβαίνει όταν αυτές υπάρχουν στον ίδιο χώρο. * Συζητήστε πώς τις αντιμετωπίζει η TypeScript και συμπληρώστε το αντικείμενο `myTodo` για να ικανοποιεί τις απαιτήσεις της συγχωνευμένης διεπαφής Todo. */ interface Todo { title: string; dueDate: Date; } interface Todo { description: string; completed: boolean; }
Μίλησε για την αυθεντικοποίηση με βάση τα cookies και την διπλή αυθεντικοποίηση στον προσωπικό λογαριασμό.
Γιατί αποφασίσατε να ψάξετε δουλειά και γιατί εμείς;