Typescript编译器类型进行分类

时间:2018-08-24 13:39:08

标签: typescript compiler-construction

我正在使用TypeScript编译器,并且有一个类型:我正在寻找该类型的类:我期望checker.js或binder.ts中有一个类似“ classToType”的实用程序。我需要一个用于实际类的类型(名义的,而不是结构的)。

有这样的工具吗?如果没有,关于如何做这种事情的任何建议?

我的总体目标是强制private names是名义上的和不可继承的,这是我正在尝试的一种方法。用伪代码:

in checker.js::getPropertyOfType: if the propery is a private name and the type is not the containing class: then return undefined

1 个答案:

答案 0 :(得分:0)

您可以使用getClassLikeDeclarationOfSymbol(type.symbol)。该功能在compiler/utilties.ts中定义。

但这不是实现不允许对具有私有名称的类进行结构化键入的目标的唯一方法。另一种方法是在向符号添加声明,添加新的SymbolFlag以及检查getUnmatchedProperty中的符号标志时检查私有名称。