如何将DateConstructor
类型转换为Date
如何将typeof MyClass
转换为MyClass
?
代码:游乐场链接
class MyDate extends Date { toNiceString () { return super.toString() } }
const skipObjectTypes = [Date, RegExp, MyDate] // for use as JS
/* problem here */
type SkipTypes = typeof skipObjectTypes[number]
// SkipTypes = typeof MyDate | DateConstructor | RegExpConstructor
/* desirable behavior */
type SkipTypesDesirable = Date | RegExp | MyDate
[Date, RegExp, MyDate]
将包含一个类数组,因此typeof skipObjectTypes[number]
将为您提供这些类的并集。
如果您想要实例类型,可以使用InstanceType
条件类型:
class MyDate extends Date { toNiceString () { return super.toString() } }
const skipObjectTypes = [Date, RegExp, MyDate] // for use as JS
/* problem here */
type SkipTypes = InstanceType<typeof skipObjectTypes[number]>
// SkipTypes = typeof MyDate | DateConstructor | RegExpConstructor
游乐场链接
找到了两种方法来解决这个问题:操场链接
type SkipTypesMethod1 = InstanceType<typeof skipObjectTypes[number]>
type SkipTypesMethod2 = typeof skipObjectTypes[number]["prototype"]
感谢@Titian Cernicova Dragomir的第一条路。