TypeScript aniq va avtomatik tiplash
Izohlar va xulosalar yozing
TypeScript turlar bilan ishlashning ikkita usulini taklif qiladi:
- Explicit Typing : Siz o‘zgaruvchining turini aniq e’lon qilasiz
- 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.jsondanoImplicitAnyni yoqing
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
