تايب سكريبت

كيف يمكن إضافة شروط تفتيش النوع (Type Guards) في Typescript؟

تستخدم Typescript شروط تفتيش النوع (Type Guards) لتحديد نوع متغير محدد في وقت تشغيلي.

يوجد ثلاثة أنواع من شروط تفتيش النوع:

1. typeof: يستخدم typeof للتحقق من نوع متغير معين.

“`typescript
function exampleFunc(value: string | number) {
if (typeof value === ‘string’) {
console.log(‘value is a string’, value.toUpperCase());
} else {
console.log(‘value is a number’, value.toFixed(2));
}
}
“`

2. instanceof: يستخدم instanceof للتحقق من نوع كائن محدد.

“`typescript
class Person {
constructor(public name: string) {}
}

class Teacher extends Person {}

function printName(person: Person) {
if(person instanceof Teacher) {
console.log(`Teacher’s name is ${person.name}`);
} else {
console.log(`Person’s name is ${person.name}`);
}
}

const person1 = new Person(‘John’);
const teacher1 = new Teacher(‘Jane’);

printName(person1); // Person’s name is John
printName(teacher1); // Teacher’s name is Jane
“`

3. in: يستخدم in للتحقق من وجود خاصية (propety) معينة في الكائن (object).

“`typescript
interface Circle {
diameter: number;
}

interface Rectangle {
width: number;
height: number;
}

type Shape = Circle | Rectangle;

function area(shape: Shape) {
if (‘diameter’ in shape) {
return Math.PI * shape.diameter * shape.diameter / 4;
} else {
return shape.width * shape.height;
}
}

const circle: Circle = { diameter: 10 };
const rectangle: Rectangle = { width: 10, height: 20 };

console.log(area(circle)); // 78.53981633974483
console.log(area(rectangle)); // 200
“`