使用TypeScript类型检查器查看是否可以分配两种类型

时间:2017-07-03 14:29:36

标签: typescript compiler-construction

我正在构建一个小脚本,使用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(在这种情况下也是如此)。

2 个答案:

答案 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