Rumah > hujung hadapan web > tutorial js > 【Essentials Temu Bual】Soalan Temu Bual TypeScript ommon

【Essentials Temu Bual】Soalan Temu Bual TypeScript ommon

PHPz
Lepaskan: 2024-09-11 06:41:40
asal
547 orang telah melayarinya

【Interview Essentials】ommon TypeScript Interview Questions

github: https://github.com/Jessie-jzn
tapak web:https://www.jessieontheroad.com/

1. Mengapa menggunakan TypeScript?

1. Semakan Jenis Statik

Kelebihan teras TypeScript ialah pemeriksaan jenis statiknya, yang membantu menangkap ralat biasa semasa fasa penyusunan dan bukannya masa jalan. Ini meningkatkan kebolehpercayaan dan kestabilan kod.

2. Pengalaman Mengedit Kod Dipertingkat

Sistem jenis TypeScript membolehkan pelengkapan kod, pemfaktoran semula, navigasi dan ciri dokumentasi yang lebih tepat dalam editor, meningkatkan kecekapan pembangunan dengan ketara.

3. Kebolehselenggaraan Kod yang Dipertingkat

Pengisytiharan jenis memudahkan pemahaman tentang niat dan struktur kod, yang amat bermanfaat dalam persekitaran pembangunan pasukan.

4. Ciri Bahasa Lanjutan

TypeScript menyokong ciri lanjutan yang tidak terdapat dalam JavaScript, seperti antara muka, enum dan generik, memudahkan pembangunan kod yang lebih berstruktur dan berskala.

5. Sokongan Alat yang Lebih Baik

TypeScript menawarkan pelbagai pilihan pengkompil untuk mengoptimumkan kod JavaScript yang dijana dan menyokong persekitaran JS yang berbeza dengan menyusun TypeScript kepada JavaScript yang serasi.

2. TypeScript lwn. 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 Sistem Jenis Penaipan statik dengan semakan jenis masa kompilasi. Jenis boleh ditentukan untuk pembolehubah, parameter fungsi dan nilai pulangan. Penaipan dinamik dengan semakan jenis masa jalan, yang boleh membawa kepada ralat masa jalan berkaitan jenis. Taip Anotasi Menyokong anotasi jenis untuk mentakrifkan jenis secara eksplisit. Cth., let name: string = "Alice"; Tiada anotasi jenis. Jenis ditentukan pada masa jalan. Kompilasi Memerlukan penyusunan kepada JavaScript. Pengkompil TypeScript menyemak ralat jenis dan menjana kod JavaScript yang setara. Berjalan terus dalam penyemak imbas atau Node.js tanpa langkah penyusunan. Pengaturcaraan Berorientasikan Objek Ciri OOP yang lebih kaya seperti kelas, antara muka, kelas abstrak dan pengubah suai akses. Ciri OOP asas dengan warisan berasaskan prototaip. Ciri Terperinci Termasuk semua ciri ES6 dan ES7, serta ciri tambahan seperti generik, enum dan penghias. Menyokong ES6 dan standard yang lebih baru, tetapi tidak mempunyai beberapa ciri lanjutan yang disediakan oleh TypeScript.

3. Jenis Data Asas dalam TypeScript

  • Boolean: Mewakili nilai benar atau salah.
  • Nombor: Mewakili kedua-dua nombor integer dan titik terapung.
  • String: Mewakili data teks, menggunakan petikan tunggal atau berganda.
  • Array: Mewakili koleksi nilai jenis yang ditentukan, menggunakan jenis[] atau Array.
  • Tuple: Mewakili tatasusunan dengan bilangan elemen tetap dengan jenis tertentu.
  • Enum: Mewakili set pemalar bernama.
  • Mana-mana: Mewakili sebarang jenis nilai. Tidak menyediakan semakan jenis.
  • Kekosongan: Mewakili ketiadaan nilai, biasanya digunakan sebagai jenis pemulangan fungsi yang tidak mengembalikan nilai.
  • Null dan Undefined: Mewakili ketiadaan nilai dan keadaan tidak dimulakan, masing-masing.
  • Tidak pernah: Mewakili nilai yang tidak pernah berlaku, seperti fungsi yang membuang ralat atau berjalan selama-lamanya.
  • Objek: Mewakili jenis bukan primitif.

4. Apakah Generik dalam TypeScript? Bagaimana ia digunakan?

Generik membenarkan fungsi, kelas dan antara muka berfungsi dengan mana-mana jenis sambil masih menguatkuasakan keselamatan jenis.

Contoh:

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

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

Salin selepas log masuk

Dalam contoh ini, fungsi identiti menggunakan generik, membenarkannya menerima dan mengembalikan nilai apa-apa jenis.

5. Perbezaan Antara tidak diketahui dan mana-mana dalam TypeScript

  • sebarang Jenis: Mewakili sebarang jenis nilai dan memintas semua semakan jenis. Ia boleh diberikan sebarang nilai tanpa semakan jenis.
  • Jenis tidak diketahui: Mewakili jenis yang tidak diketahui. Nilai jenis yang tidak diketahui mesti disemak sebelum ia boleh digunakan, menyediakan cara yang lebih selamat untuk mengendalikan nilai yang jenisnya tidak pasti.
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
}

Salin selepas log masuk

6. Perbezaan Antara Pengubah suai baca sahaja dan Kata Kunci const

  • Pengubah suai baca sahaja: Digunakan pada sifat objek untuk menjadikannya tidak berubah selepas pemula.
  • kata kunci const: Digunakan untuk mengisytiharkan pembolehubah dengan rujukan tidak berubah. Sifat objek masih boleh diubah suai.
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

Salin selepas log masuk

7. Penghias dalam TypeScript

Penghias ialah ciri TypeScript khas yang membenarkan menambah metadata atau mengubah suai kelas, kaedah, sifat atau parameter.

Jenis:

  • Penghias Kelas: Digunakan pada pembina kelas untuk mengubah suai gelagat kelas atau menambah metadata.
  • Penghias Kaedah: Digunakan pada kaedah untuk menukar tingkah laku mereka atau menambah metadata.
  • Penghias Aksesor: Digunakan untuk mendapatkan atau menetapkan aksesori untuk mengubah suai tingkah laku mereka.
  • Penghias Hartanah: Digunakan pada sifat kelas untuk menambah metadata atau mengubah suai tingkah laku mereka.
  • Penghias Parameter: Digunakan pada parameter kaedah untuk menambah metadata.

Contoh:

  • Penghias Kelas:
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}`;
  }
}

Salin selepas log masuk
  • Penghias Kaedah:
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;
  }
}

Salin selepas log masuk

Penggunaan:

Decorators didayakan dengan menetapkan experimentalDecorators kepada true dalam tsconfig.json.

8. Perbezaan Antara antara muka dan jenis

antara muka dan jenis kedua-duanya digunakan untuk menentukan jenis objek, tetapi mereka mempunyai beberapa perbezaan:

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.
antara muka

taip

Penggunaan Asas Mentakrifkan bentuk objek, termasuk sifat dan kaedah. Mentakrifkan jenis primitif, jenis objek, jenis kesatuan, jenis persilangan, dsb. Sambungan Menyokong penggabungan pengisytiharan. Berbilang pengisytiharan antara muka yang sama digabungkan secara automatik. Tidak menyokong penggabungan pengisytiharan. Jenis Kesatuan dan Persimpangan Tidak disokong. Menyokong kesatuan (` Alias ​​Jenis Primitif Tidak disokong. Menyokong pengalsan jenis primitif. Jenis Dipetakan Tidak disokong. Menyokong jenis dipetakan. Pelaksanaan Kelas Menyokong pelaksanaan kelas menggunakan alat. Tidak menyokong pelaksanaan kelas langsung. Soalan dan jawapan ini harus membantu menyediakan temu duga TypeScript dengan merangkumi konsep asas dan penggunaan praktikal.

Atas ialah kandungan terperinci 【Essentials Temu Bual】Soalan Temu Bual TypeScript ommon. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan