我正在尝试检查对象的类型是否是类,是否是任何类。
这是我尝试过的:
export type IsClass<T> = (
T extends ({new (...args: any[]): any}) ? true : false
)
class SomeClass {}
const a: IsClass<number> = false;
const b: IsClass<SomeClass> = false;
const c: IsClass<({new(): any})> = true;
最后我检查了一下,无法判断一个类型是对象还是类,但我找不到与之相关的 Typescript 问题。
如何检查对象的类型是否为类?
奖励:这是如何使用实际代码检查它。它不会转化为类型逻辑。
function isClass(target: any) {
return typeof target === "object" && (/^(object|array)$/i.test(target.constructor.name) === false)
}
据我所知,Typescript 知道对象和类之间的区别......有点:
const a = {};
class B{};
const testA = new a(); //error: This expression is not constructable.
const testB = new B();
但我想它不能说 testB 是一个类对象。
Typescript 有两个独立的命名空间。一种用于代码,一种用于类型。在代码级别不可能没有类。类型仅在编译时进行分析。这是因为 Typescript 是 Javascript 的超集。所以没有像 Java 这样的东西,你有一个反射 API 来检查类型结构。
你的根本问题是什么?你的目标是什么?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句