Heim > Web-Frontend > js-Tutorial > Hauptteil

【Grundlagen des Vorstellungsgesprächs】 Häufige Fragen im Vorstellungsgespräch mit TypeScript

PHPz
Freigeben: 2024-09-11 06:41:40
Original
516 Leute haben es durchsucht

【Interview Essentials】ommon TypeScript Interview Questions

github: https://github.com/Jessie-jzn
Website:https://www.jessieontheroad.com/

1. Warum TypeScript verwenden?

1. Statische Typprüfung

Der Hauptvorteil von TypeScript ist die statische Typprüfung, die dabei hilft, häufige Fehler während der Kompilierungsphase und nicht zur Laufzeit zu erkennen. Dies erhöht die Zuverlässigkeit und Stabilität des Codes.

2. Verbesserte Erfahrung bei der Codebearbeitung

Das Typsystem von TypeScript ermöglicht eine genauere Codevervollständigung, Refactoring, Navigation und Dokumentationsfunktionen in Editoren und steigert so die Entwicklungseffizienz erheblich.

3. Verbesserte Wartbarkeit des Codes

Typdeklarationen erleichtern das Verständnis von Codeabsichten und -struktur, was besonders in Teamentwicklungsumgebungen von Vorteil ist.

4. Erweiterte Sprachfunktionen

TypeScript unterstützt erweiterte Funktionen, die in JavaScript nicht vorhanden sind, wie z. B. Schnittstellen, Aufzählungen und Generika, und erleichtert so die Entwicklung von strukturierterem und skalierbarerem Code.

5. Bessere Werkzeugunterstützung

TypeScript bietet verschiedene Compiler-Optionen zur Optimierung des generierten JavaScript-Codes und unterstützt verschiedene JS-Umgebungen durch Kompilieren von TypeScript zu kompatiblem JavaScript.

2. TypeScript vs. JavaScript

TypeScript JavaScript
Type System Static typing with compile-time type checks. Types can be specified for variables, function parameters, and return values. Dynamic typing with runtime type checks, which can lead to type-related runtime errors.
Type Annotations Supports type annotations to explicitly define types. E.g., let name: string = "Alice"; No type annotations. Types are determined at runtime.
Compilation Requires compilation to JavaScript. TypeScript compiler checks for type errors and generates equivalent JavaScript code. Runs directly in browsers or Node.js without a compilation step.
Object-Oriented Programming Richer OOP features such as classes, interfaces, abstract classes, and access modifiers. Basic OOP features with prototype-based inheritance.
Advanced Features Includes all ES6 and ES7 features, plus additional features like generics, enums, and decorators. Supports ES6 and later standards, but lacks some of the advanced features provided by TypeScript.
TypeScript JavaScript Typensystem Statische Typisierung mit Typprüfungen zur Kompilierungszeit. Typen können für Variablen, Funktionsparameter und Rückgabewerte angegeben werden. Dynamische Typisierung mit Laufzeit-Typprüfungen, die zu typbezogenen Laufzeitfehlern führen kann. Anmerkungen eingeben Unterstützt Typanmerkungen zum expliziten Definieren von Typen. Beispiel: let name: string = "Alice"; Keine Typanmerkungen. Typen werden zur Laufzeit bestimmt. Zusammenstellung Erfordert Kompilierung in JavaScript. Der TypeScript-Compiler prüft auf Typfehler und generiert entsprechenden JavaScript-Code. Läuft direkt in Browsern oder Node.js ohne Kompilierungsschritt. Objektorientierte Programmierung Umfangreichere OOP-Funktionen wie Klassen, Schnittstellen, abstrakte Klassen und Zugriffsmodifikatoren. Grundlegende OOP-Funktionen mit prototypbasierter Vererbung. Erweiterte Funktionen Enthält alle ES6- und ES7-Funktionen sowie zusätzliche Funktionen wie Generika, Aufzählungen und Dekoratoren. Unterstützt ES6 und spätere Standards, es fehlen jedoch einige der erweiterten Funktionen von TypeScript.

3. Grundlegende Datentypen in TypeScript

  • Boolean: Stellt wahre oder falsche Werte dar.
  • Zahl: Stellt sowohl Ganzzahl- als auch Gleitkommazahlen dar.
  • String: Stellt Textdaten dar, mit einfachen oder doppelten Anführungszeichen.
  • Array: Stellt eine Sammlung von Werten eines angegebenen Typs dar, wobei type[] oder Array verwendet wird.
  • Tupel: Stellt ein Array mit einer festen Anzahl von Elementen mit angegebenen Typen dar.
  • Enum: Stellt eine Menge benannter Konstanten dar.
  • Any: Repräsentiert jede Art von Wert. Bietet keine Typprüfung.
  • Void: Stellt das Fehlen eines Werts dar und wird üblicherweise als Rückgabetyp von Funktionen verwendet, die keinen Wert zurückgeben.
  • Null und Undefiniert: Stellt das Fehlen eines Werts bzw. einen nicht initialisierten Zustand dar.
  • Nie: Stellt Werte dar, die nie auftreten, z. B. Funktionen, die Fehler auslösen oder auf unbestimmte Zeit ausgeführt werden.
  • Objekt: Stellt nicht-primitive Typen dar.

4. Was sind Generics in TypeScript? Wie werden sie verwendet?

Generika ermöglichen es Funktionen, Klassen und Schnittstellen, mit jedem Typ zu arbeiten und gleichzeitig die Typsicherheit zu gewährleisten.

Beispiel:

function identity<T>(arg: T): T {
  return arg;
}

const numberIdentity = identity<number>(42);
const stringIdentity = identity<string>("Hello");

Nach dem Login kopieren

In diesem Beispiel verwendet die Identitätsfunktion ein generisches , das es ihr ermöglicht, Werte jeden Typs zu akzeptieren und zurückzugeben.

5. Unterschied zwischen unbekannt und beliebig in TypeScript

  • beliebiger Typ: Stellt jeden Werttyp dar und umgeht jegliche Typprüfung. Es kann ohne Typprüfungen ein beliebiger Wert zugewiesen werden.
  • unbekannter Typ: Stellt einen unbekannten Typ dar. Werte unbekannten Typs müssen überprüft werden, bevor sie verwendet werden können. Dies bietet eine sicherere Möglichkeit, mit Werten umzugehen, deren Typ unsicher ist.
let anyVar: any;
let unknownVar: unknown;

anyVar = 5;
anyVar.toUpperCase(); // No compile-time error, but might cause runtime error

unknownVar = "Hello";
if (typeof unknownVar === "string") {
  unknownVar.toUpperCase(); // Type check ensures safety
}

Nach dem Login kopieren

6. Unterschied zwischen readonly-Modifikator und const-Schlüsselwort

  • schreibgeschützter Modifikator: Wird für Objekteigenschaften verwendet, um sie nach der Initialisierung unveränderlich zu machen.
  • const-Schlüsselwort: Wird zum Deklarieren von Variablen mit unveränderlichen Referenzen verwendet. Die Eigenschaften des Objekts können weiterhin geändert werden.
const obj = { name: "John" };
obj.name = "Doe"; // Allowed

interface User {
  readonly id: number;
  name: string;
}

const user: User = { id: 1, name: "John" };
user.name = "Doe"; // Allowed
user.id = 2; // Error, `id` is readonly

Nach dem Login kopieren

7. Dekoratoren in TypeScript

Dekoratoren sind eine spezielle TypeScript-Funktion, die das Hinzufügen von Metadaten oder das Ändern von Klassen, Methoden, Eigenschaften oder Parametern ermöglicht.

Typen:

  • Klassendekoratoren: Wird auf Klassenkonstruktoren angewendet, um das Klassenverhalten zu ändern oder Metadaten hinzuzufügen.
  • Methodendekoratoren: Wird auf Methoden angewendet, um deren Verhalten zu ändern oder Metadaten hinzuzufügen.
  • Accessor-Dekoratoren: Wird angewendet, um Accessoren abzurufen oder festzulegen, um deren Verhalten zu ändern.
  • Eigenschaftsdekoratoren: Wird auf Klasseneigenschaften angewendet, um Metadaten hinzuzufügen oder deren Verhalten zu ändern.
  • Parameterdekoratoren: Wird auf Methodenparameter angewendet, um Metadaten hinzuzufügen.

Beispiele:

  • Klassendekorateur:
function sealed(constructor: Function) {
  Object.seal(constructor);
  Object.seal(constructor.prototype);
}

@sealed
class Greeter {
  greeting: string;
  constructor(message: string) {
    this.greeting = message;
  }

  greet() {
    return `Hello, ${this.greeting}`;
  }
}

Nach dem Login kopieren
  • Methode Decorator:
function logMethod(target: any, propertyName: string, descriptor: PropertyDescriptor) {
  const originalMethod = descriptor.value;
  descriptor.value = function (...args: any[]) {
    console.log(`Method ${propertyName} called with args: ${JSON.stringify(args)}`);
    return originalMethod.apply(this, args);
  };
}

class Calculator {
  @logMethod
  add(a: number, b: number): number {
    return a + b;
  }
}

Nach dem Login kopieren

Verwendung:

Dekoratoren werden aktiviert, indem „experimentalDecorators“ in tsconfig.json auf „true“ gesetzt wird.

8. Unterschied zwischen Schnittstelle und Typ

Schnittstelle und Typ werden beide zum Definieren von Objekttypen verwendet, weisen jedoch einige Unterschiede auf:

interface type
Basic Usage Defines the shape of objects, including properties and methods. Defines primitive types, object types, union types, intersection types, etc.
Extension Supports declaration merging. Multiple declarations of the same interface are automatically merged. Does not support declaration merging.
Union and Intersection Types Not supported. Supports union (`
Primitive Type Aliases Not supported. Supports aliasing primitive types.
Mapped Types Not supported. Supports mapped types.
Class Implementation Supports class implementation using implements. Does not support direct class implementation.
Schnittstelle

Typ

Grundlegende Verwendung Definiert die Form von Objekten, einschließlich Eigenschaften und Methoden. Definiert Grundtypen, Objekttypen, Vereinigungstypen, Schnitttypen usw. Erweiterung Unterstützt das Zusammenführen von Deklarationen. Mehrere Deklarationen derselben Schnittstelle werden automatisch zusammengeführt. Unterstützt das Zusammenführen von Deklarationen nicht. Vereinigungs- und Schnittpunkttypen Nicht unterstützt. Unterstützt Union (` Primitive Typ-Aliase Nicht unterstützt. Unterstützt Aliasing primitiver Typen. Zugeordnete Typen Nicht unterstützt. Unterstützt zugeordnete Typen. Klassenimplementierung Unterstützt die Klassenimplementierung mithilfe von Implementierungen. Unterstützt keine direkte Klassenimplementierung. Diese Fragen und Antworten sollen bei der Vorbereitung auf TypeScript-Interviews helfen, indem sie grundlegende Konzepte und die praktische Anwendung abdecken.

Das obige ist der detaillierte Inhalt von【Grundlagen des Vorstellungsgesprächs】 Häufige Fragen im Vorstellungsgespräch mit TypeScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage