请问我们在使用类型注释的时候,何时使用type class名,何时使用class名呢?
我经过如下实验:
class Person { name: string | undefined; getName = () => { return this.name } } const persons: Person[] = [ new Person(), new Person(), new Person(), ] const persons2: typeof Person[] = [ Person, Person, Person ]
比如以上,是否是返回类型为class名称的时候,使用 typeof class名
,返回类对象的时候,使用class名
?
在使用类型注释时,可以使用 typeof 关键字来表示类本身的类型,也可以直接使用类名来表示类的实例类型。
如果你想要表示一个类本身的类型,可以使用 typeof 关键字。例如,在你的示例代码中,const persons2: typeof Person[] 表示 persons2 变量的类型是一个类本身的数组类型。在这种情况下,typeof 关键字用于获取类本身的类型,而不是类的实例类型。
如果你想要表示一个类的实例类型,可以直接使用类名。例如,在你的示例代码中,const persons: Person[] 表示 persons 变量的类型是 Person 类的实例数组类型。在这种情况下,类名用于表示类的实例类型,而不是类本身的类型。
需要注意的是,typeof 关键字在 TypeScript 中还可以用于获取其他类型的类型,例如函数类型、基本类型等。而对于类来说,typeof 关键字主要用于获取类本身的类型,而不是类的实例类型。如果你想要表示一个类的实例类型,应该直接使用类名。
/* eslint-disable */ class Foo { public static bar: number public baz: string } type InstanceSide = Foo type StaticSide = typeof Foo const instance: InstanceSide = new Foo() const classSelf: StaticSide = Foo