我正在構建一個小腳本,使用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