تستخدم 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
“`