打字稿语法:{ new (): T } | { 新 (): T }[]

typescript syntax: { new (): T } | { new (): T }[]

我正在浏览 Vue api 文档并注意到一些对我来说没有意义的 Typescript 语法

type PropType<T> = { new (): T } | { new (): T }[]

{ new (): T } 是一个具有构造方法的对象吗 returns 泛型类型 T,是这个意思吗?

是的,它是两个构造签名之间的联合:

type PropType<T> = { new (): T } | { new (): T }[]

class A {}

const b = (a: PropType<A>) =>
  a instanceof Array ? [] : new a();

因为它是一个联合体,所以需要缩小类型,以便编译器可以选择正确的类型。