如果代码如下所示,
interface foo {
one: number;
two: string;
}
const bar: foo = { one: 5, two: "hello" };
然后如何获取常量'bar'的类型定义? 使用
console.log(typeof bar);
我得到的是“对象”,但没有确切的定义名称。
谢谢。
答案 0 :(得分:1)
接口,类型和环境声明在编译期间均被删除。这是在TypeScript文档中可以找到的“类型擦除”的概念。
如果需要类型继续存在,则需要使用编译后仍保留的构造。例如:
class Foo {
constructor(public one: number, public two: string) { }
}
const foo = new Foo(5, 'hello');
console.log(foo.constructor.name);
如果需要区分类型,TypeScript中有一种模式称为Discriminated Union,这可能是您要寻找的-在其他大多数情况下,应谨慎使用此类信息。