我正在构建一个小脚本,使用TypeScript Compiler API扫描所有具有给定类型成员的接口,其中的源可找到here。我检查这些班级的成员,看看他们是如何相互关联的。使用TypeScript类型检查器来查看是否可分配两种类型
我的问题是:我怎么知道何时可以将一个类型赋值给另一个类型?我搜索TypeChecker
的方法,但我找不到一个。有没有人有任何机会有任何指针?下面是应该能够得到分析的一些例子:
export enum ASTKind {
Number,
Addition,
Multiplication,
}
export interface AST {
kind: ASTKind
}
export interface BinaryExpression extends AST {
left: AST
right: AST
}
export interface Addition extends BinaryExpression {
kind: ASTKind.Addition
}
export interface Multiplication extends BinaryExpression {
kind: ASTKind.Multiplication
}
从本质上讲,我希望有一个断言,说ASTKind.Multiplication
是否是分配给ASTKind
(这是真的在这种情况下)。
我在修改编译器本身:https://github.com/Microsoft/TypeScript/tree/master/src/compiler – samvv