简介:在TypeScript中,我们经常需要判断一个对象的类型。以下是四种常用的方式来判断对象类型。
在TypeScript中,我们经常需要判断一个对象的类型。以下是四种常用的方式来判断对象类型:
instanceof 操作符instanceof 操作符通常用于判断一个对象是否是某个类的实例。然而,在TypeScript中,instanceof 操作符只能用于判断对象是否是内置类型(如 Array、Date 等)的实例,而不能用于判断对象是否是自定义类型的实例。
let arr: any = [];console.log(arr instanceof Array); // trueclass MyClass {}let obj = new MyClass();console.log(obj instanceof MyClass); // 报错,因为MyClass不是内置类型
typeof 操作符和 instanceof 操作符结合typeof 操作符和 instanceof 操作符来判断一个对象是否是某个类的实例。首先,使用 typeof 操作符获取类的构造函数,然后使用 instanceof 操作符判断对象是否是这个构造函数的实例。
class MyClass {} // 自定义类型let obj = new MyClass();let isInstance = obj instanceof (typeof MyClass);console.log(isInstance); // true
type MyType = { foo: number; };let value = { foo: 123 }; // 实际值可能是其他类型let myVar: MyType = value as MyType;console.log(myVar.foo); // 123
typeof 和 keyof)请注意,以上示例中的代码仅为演示目的,实际使用时可能需要根据具体情况进行调整。
type MyType = { foo: number; bar?: string; };let value = { foo: 123 }; // 实际值可能是其他类型if ('foo' in value && !(key in value && keyof MyType[key] === 'bar')) {let myVar: MyType = value;}