首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TypeScript编译器中了解声明类型的符号?

如何在TypeScript编译器中了解声明类型的符号?
EN

Stack Overflow用户
提问于 2017-06-07 19:58:30
回答 1查看 1.1K关注 0票数 0

我试图在编译器API之后构建一个代码分析工具。

现在,下面的应用程序可以打印出pPersonagewalk

但是如何认识Person是接口,walk是函数等呢?谢谢

// app.ts

代码语言:javascript
复制
import * as ts from 'typescript';

const userAppFile = './user-app.ts';
const apiFile = './api.d.ts';

const program = ts.createProgram([userAppFile, apiFile], ts.getDefaultCompilerOptions());
const checker = program.getTypeChecker();
const sourceFile = program.getSourceFile(userAppFile);

function printApi(node) {
  const symbol = checker.getSymbolAtLocation(node);

  if (symbol) console.log(symbol.name);

  ts.forEachChild(node, printApi);
}

printApi(sourceFile);

// api.d.ts

代码语言:javascript
复制
interface Person {
  age: number;
}

declare function walk(speed: number): void;

// user-app.ts

代码语言:javascript
复制
const p: Person = { age: 10 };
walk(3);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-07 21:14:23

你检查符号上的标志。

即:

代码语言:javascript
复制
if(symbol.flags & ts.SymbolFlags.Class) {
   // this symbol is a class 
} else if (symbol.flags & ts.SymbolFlags.Interface) {
   // this is an interface 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44421735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档