github: https://github.com/Jessie-jzn
tapak web:https://www.jessieontheroad.com/
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.
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. |
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");
Dalam contoh ini, fungsi identiti menggunakan
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 }
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
Penghias ialah ciri TypeScript khas yang membenarkan menambah metadata atau mengubah suai kelas, kaedah, sifat atau parameter.
Jenis:
Contoh:
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}`; } }
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; } }
Penggunaan:
Decorators didayakan dengan menetapkan experimentalDecorators kepada true dalam tsconfig.json.
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. |
taip
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!