我正在构建一个小脚本,使用TypeScript Compiler API扫描具有给定类型成员的所有接口,其中可以找到源here。我检查这些类的成员,看看它们是如何相互关联的。
我的问题是:如何知道何时可以将类型分配给其他类型?我在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
(在这种情况下也是如此)。
答案 0 :(得分:1)
我发现它:似乎目前无法实现:
我创建了自己的fork,它公开了这个功能。我会尝试维护它,所以如果有人感兴趣,他或她可以直到上游使用叉子。
答案 1 :(得分:-3)
Typescript只是JavaScript的超集。你不能在奔跑中做出反应。使用TypeScript验证您无法使用Javascript。
JavaScript没有"类"或者"继承"信息。它只知道创建对象并验证实例是否是对象的实例。
JavaScript确实有一个名为' instaceof'验证实例是否是类的实例。例如。
var x = new ASTKind.Multiplication
x instanceof ASTKind.Multiplication // will return true
x instanceof AST // sill also return true