浏览 52
扫码
InstanceType 工具类型在 TypeScript 中用于获取构造函数类型的实例类型。它可以用来从构造函数类型中获取一个实例类型,这在某些情况下非常有用。
首先,让我们来看一个简单的例子:
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
type PersonInstance = InstanceType<typeof Person>;
// PersonInstance 的类型为 Person
在上面的例子中,我们定义了一个 Person 类,并通过 typeof Person 获取了 Person 类的构造函数类型。然后使用 InstanceType
另一个例子是通过泛型来获取构造函数类型的实例类型:
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
}
function createInstance<T extends new (...args: any[]) => any>(ctor: T, ...args: ConstructorParameters<T>): InstanceType<T> {
return new ctor(...args);
}
const dog: InstanceType<typeof Animal> = createInstance(Animal, "Dog");
// dog 的类型为 Animal,值为 { name: "Dog" }
在这个例子中,我们定义了一个 createInstance 函数,它接受一个构造函数和构造函数的参数,并返回构造函数的实例。通过泛型约束 T extends new (…args: any[]) => any,我们可以确保传入的参数是一个构造函数类型。然后使用 InstanceType
总之,InstanceType 工具类型可以帮助我们从构造函数类型中获取实例类型,这对于一些需要动态创建实例的场景非常有用。希望这个简单的教程能够帮助你理解 InstanceType 工具类型的用法。