我有一个a
用 type 声明的变量string
,但未初始化。有没有办法获取string
类型而不是undefined
?
> let a:string;
undefined
> console.log(typeof a);
undefined
我有一个a
用 type 声明的变量string
,但未初始化。有没有办法获取string
类型而不是undefined
?
> let a:string;
undefined
> console.log(typeof a);
undefined
是的,有一种方法可以在 typescript 中获取类型元数据,但是您必须在 typescript 编译器配置中激活反射元数据选项并导入反射元数据 polyfill,这将增加您的包大小。
看这里找到更合适的访问打字稿类型的例子。
由于无法在运行时获取类型;并基于@deceze 的评论(单独保存元数据)
如果它可以帮助某人,这种解决方法可以完成这项工作。它不使用反射decorators
> class C {
constructor(
public var1?:string,
public var2?:string,
public var3?:number
) {}
typeof(v) {
switch (v) {
case 'var1':
case 'var2':
return 'string';
case 'var3':
return 'number';
}
}
}
> let c = new C();
> console.log(Object.keys(c).map(
a => {
console.log( ' Var: ' + a +
' - Type: ' + c.typeof(`${a}`) )
})
);
Var: var1 - Type: string
Var: var2 - Type: string
Var: var3 - Type: number
[ undefined, undefined, undefined ]