TypeScript aniq va avtomatik tiplash


ULASHISH

Izohlar va xulosalar yozing

TypeScript turlar bilan ishlashning ikkita usulini taklif qiladi:

  1. Explicit Typing : Siz o‘zgaruvchining turini aniq e’lon qilasiz
  2. Type Inference : TypeScript belgilangan qiymat asosida avtomatik ravishda turni aniqlaydi

Har bir yondashuvdan qachon foydalanish kerak

  • Use explicit types for:
    • Funksiya parametrlari va qaytish turlari
    • Obyekt harflari
    • Dastlabki qiymat yakuniy tur bo‘lmasligi mumkin
  • Use type inference for:
    • Darhol tayinlangan oddiy o‘zgaruvchan deklaratsiyalar
    • Kontekstdan turi aniq bo‘lsa

Annotatsiyalar turi

Aniq yozish, siz TypeScript-ga o‘zgaruvchining qaysi turi bo‘lishi kerakligini aniq aytishingizni anglatadi:

Asosiy aniq turlari

// String
greeting: string = "Hello, TypeScript!";

// Number
userCount: number = 42;

// Boolean
isLoading: boolean = true;

// Array of numbers
scores: number[] = [100, 95, 98];
O‘zingiz sinab ko‘ring »

Best Practice: Kodingizni yanada barqaror va o‘z-o‘zidan hujjatlashtirish uchun funksiya parametrlari va qaytarish turlari uchun aniq turlardan foydalaning.

Aniq turlari bilan funksiya

// Function with explicit parameter and return types
function greet(name: string): string {
return `Hello, ${name}!`;
}

// TypeScript will ensure you pass the correct argument type
greet("Alice"); // OK
greet(42);     // Error: Argument of type '42' is not assignable to parameter of type 'string'
O‘zingiz sinab ko‘ring »

Xulosa yozing

TypeScript o‘zgaruvchining turini uning boshlang‘ich qiymatiga qarab avtomatik ravishda aniqlay oladi (xulosa qiladi):

Asosiy turdagi xulosa

// TypeScript infers 'string'
let username = "alice";

// TypeScript infers 'number'
let score = 100;

// TypeScript infers 'boolean[]'
let flags = [true, false, true];

// TypeScript infers return type as 'number'
function add(a: number, b: number) {
return a + b;
}
O‘zingiz sinab ko‘ring »

Eslatma: O‘zgaruvchilar deklaratsiyada ishga tushirilganda, turdagi xulosa eng yaxshi ishlaydi.

Agar siz tsconfig.json faylida strictNullChecks ni yoqmasangiz, ishga tushirilmagan o‘zgaruvchilar sukut bo‘yicha “har qanday” turiga ega.

Xulosa porlaganda

Obyektning so‘zma-so‘z xulosasi

// TypeScript infers the shape of the object
const user = {
name: "Alice",
age: 30,
isAdmin: true
};

// TypeScript knows these properties exist
console.log(user.name);  // OK
console.log(user.email); // Error: Property 'email' does not exist
O‘zingiz sinab ko‘ring »

Watch Out: Turni chiqarish qulay bo‘lsa-da, turlar bilan aniq bo‘lish, ayniqsa, kattaroq kod bazalari yoki umumiy API’larda kodingizni yanada barqaror qilish imkonini beradi.



Ishda xavfsizlikni yozing

TypeScript-ning asosiy afzalliklaridan biri ishlab chiqish jarayonida turga bog‘liq xatolarni aniqlashdir.

Keling, TypeScript keng tarqalgan xatolarning oldini olishga qanday yordam berishini ko‘rib chiqaylik.

Turi nomuvofiqligi xatolari

Aniq turdagi nomuvofiqlik

let username: string = "alice";
username = 42; // Error: Type 'number' is not assignable to type 'string'
O‘zingiz sinab ko‘ring »

Yashirin tur nomuvofiqligi

let score = 100;  // TypeScript infers 'number'
score = "high";  // Error: Type 'string' is not assignable to type 'number'
O‘zingiz sinab ko‘ring »

JavaScript va TypeScript

JavaScript-da quyidagi kod xatosiz ishlaydi, bu esa xatolarga olib kelishi mumkin:

JavaScript xatti-harakati

// This is valid JavaScript but can lead to bugs
function add(a, b) {
return a + b;
}

console.log(add("5", 3)); // Returns "53" (string concatenation)

TypeScript kompilyatsiya vaqtida ushbu muammolarni aniqlaydi:

TypeScript turi xavfsizligi

function add(a: number, b: number): number {
return a + b;
}

console.log(add("5", 3)); // Error: Argument of type 'string' is not assignable to parameter of type 'number'
O‘zingiz sinab ko‘ring »

TypeScript turlari haqida xulosa chiqara olmasa

TypeScript-ning turdagi xulosasi kuchli bo‘lsa-da, u to‘g‘ri turni aniqlay olmaydigan holatlar mavjud.

Bunday holatlarda TypeScript any turiga qaytadi, bu esa turni tekshirishni o‘chirib qo‘yadi.

Eslatma: any va boshqa Maxsus Turlar keyingi bobda batafsil yoritilgan.

any uchun umumiy holatlar

// 1. JSON.parse returns 'any' because the structure isn't known at compile time
const data = JSON.parse('{ "name": "Alice", "age": 30 }');

// 2. Variables declared without initialization
let something;  // Type is 'any'
something = 'hello';
something = 42;  // No error
O‘zingiz sinab ko‘ring »

Mumkin bo‘lganda any dan qoching

any dan foydalanish TypeScript turini tekshirishni o‘chirib qo‘yadi.

Buning o‘rniga quyidagi variantlarni ko‘rib chiqing:

  • Turi izohlaridan foydalaning
  • Murakkab obyektlar uchun interfeyslarni yarating
  • Ish vaqti turini tekshirish uchun turdagi himoya vositalaridan foydalaning
  • tsconfig.json da noImplicitAnyni yoqing


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!