2.5 TypeScript 中的 instanceof 运算符
在 TypeScript 中,instanceof
运算符用于在运行时检查一个对象是否是某个类或构造函数的实例。它会返回一个布尔值:
- 如果对象是该类型的实例,返回
true
; - 否则返回
false
。
这种机制提供了一种在运行时进行类型校验的方式,从而增强代码的健壮性和安全性。
基本语法
objectName instanceof typeEntity
参数说明:
- objectName:要检查的对象。
- typeEntity:要检查的目标类型(类或构造函数)。
返回值:
- 返回
true
表示该对象确实是该类型的实例; - 否则返回
false
。
示例一:配合 TypeScript 类使用 instanceof
下面这个例子展示了如何使用 instanceof
来判断对象是否属于某个类的实例:
class Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}
}const person1 = new Person("Pankaj", 20);
console.log(person1 instanceof Person); // trueconst randomObject = { name: "Neeraj", job: "Developer" };
console.log(randomObject instanceof Person); // false
输出:
true
false
尽管 randomObject
拥有与 Person
类类似的属性结构,但它并不是通过 Person
构造函数创建的,因此不是其实例。
示例二:配合构造函数使用 instanceof
instanceof
也可以用于普通的构造函数,而不仅仅是类。
function Company(name: string, est: number) {this.name = name;this.est = est;
}const GFG = new Company("GeeksforGeeks", 2009);const cmpny2 = {name: "Company2",est: 2010
}console.log(GFG instanceof Company); // true
console.log(cmpny2 instanceof Company); // false
输出:
true
false
GFG
是使用 Company
构造函数创建的,而 cmpny2
虽然拥有相同的属性,但它并不是通过该构造函数实例化的对象。
总结
instanceof
是 TypeScript 中一个强大的运行时类型检查工具,主要用于判断一个对象是否为某个类或构造函数的实例。
你可以在以下场景中使用它:
- 类型断言(Type Assertion)
- 条件判断(如 instanceof 的分支处理)
- 调试时查看对象真实类型
通过掌握并合理使用 instanceof
,可以提升代码的类型安全性,使你的 TypeScript 应用更稳健、可维护性更强。
✅ 小提示:instanceof
检查的是原型链,因此只能用于引用类型(如类实例或构造函数创建的对象),对基本类型(如字符串、数字)无效。如果你想检查基本类型,可以使用 typeof
运算符。