据我所知,TypeScript中没有类似的东西:
type TypeA = { x: number };
printType(TypeA);
这是我发现的唯一一种方法,可以让TypeScript始终输出类型的描述。
const y = {
x: 1,
z: 'hello',
};
const z: never = y;
尝试赋值给never
类型总是会打印一个错误,并且该错误会提到被赋值的值的类型。
Type '{ x: number; z: string; }' is not assignable to type 'never'.
这种方法是有限的,因为它需要一个真实的的变量。
真的没有别的办法了吗?
1条答案
按热度按时间oknwwptz1#
你不能在运行时这样做,因为TypeScript types are necessarily erased at runtime。因此,您只能在IDE中或作为编译过程的一部分执行此操作,然后TypeScript才能成为可运行的JavaScript。将此作为编译错误发出的解决方法是有效的,因为它发生在编译期间;没有办法使用官方的TS让它在运行时工作。
也就是说,tsserver的可用性使得许多IDE很容易集成类型信息。该页面还包括一些示例集成,尽管还有许多其他集成可用。其中最重要的是微软自己的Visual Studio Code,它提供了IntelliSense(弹出窗口,悬停和代码完成)和Inlay提示(内联呈现的参数和类型信息,就像显式编写的一样)。
最后,一个名为Twoslash的面向文档的语言扩展向IDE发出显式请求,以内联方式显示该类型。这与上面的镶嵌提示非常相似,但可以选择您指定的点。它在TypeScript Playground和extensions are available to add Twoslash support to VSCode中自动可用。
与playground链接中一样,方括号中的类型注解将自动添加和更新。