当前位置:首页 > 行业动态 > 正文

typescript instancetype

TypeScript中的instanceof关键字用于检查一个对象是否是某个类的实例,而instancetype关键字则用于定义一个类的类型,表示该类是其子类的实例类型。

typescript instancetype  第1张

1. instanceof关键字

instanceof关键字用于检查一个对象是否是某个类的实例,它的语法如下:

object instanceof ClassName

object是要检查的对象,ClassName是要检查的类名,如果object是ClassName的实例,那么表达式的结果为true,否则为false。

class Animal {
  move() {
    console.log("Animal is moving");
  }
}
class Dog extends Animal {
  bark() {
    console.log("Dog is barking");
  }
}
const dog = new Dog();
dog instanceof Animal; // 输出:true,因为Dog是Animal的子类

2. instancetype关键字

instancetype关键字用于定义一个类的类型,表示该类是其子类的实例类型,它的语法如下:

class ClassName extends BaseClass {
  instancetype ThisIsInstanceType;
}

ClassName是要定义类型的类名,BaseClass是基类,这样,ClassName的实例类型就是其子类的实例类型。

class Animal {
  move() {
    console.log("Animal is moving");
  }
}
class Dog extends Animal {
  bark() {
    console.log("Dog is barking");
  }
}
class Cat extends Animal {
  meow() {
    console.log("Cat is meowing");
  }
}
class AnimalHandler<T extends Animal> {
  handle(animal: T): void {
    animal.move(); // 所有Animal的子类都有move方法,所以可以调用它
  }
}
const dogHandler = new AnimalHandler<Dog>(); // DogHandler的类型参数为Dog,即Dog的实例类型
const catHandler = new AnimalHandler<Cat>(); // CatHandler的类型参数为Cat,即Cat的实例类型
0