Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript编译器API:如何通过ImportSpecifier节点获取文本值?_Typescript_Typescript Compiler Api - Fatal编程技术网

TypeScript编译器API:如何通过ImportSpecifier节点获取文本值?

TypeScript编译器API:如何通过ImportSpecifier节点获取文本值?,typescript,typescript-compiler-api,Typescript,Typescript Compiler Api,我有两个打字脚本文件 常数: export const defaultProps = { name: 'Node' }; MyComponent.tsx: import * as React from 'react'; import {defaultProps} from './const'; interface MyCompProps { name: string; } export class MyComp extends React.Component<MyComp

我有两个打字脚本文件

常数:

export const defaultProps = {
    name: 'Node'
};
MyComponent.tsx:

import * as React from 'react';
import {defaultProps} from './const';

interface MyCompProps {
  name: string;
}

export class MyComp extends React.Component<MyCompProps> {
  static defaultProps = defaultProps;

  constructor(props: MyCompProps) {
    super(props);
  }

  render() {
    const {name} = this.props;
    return <div>{name}</div>;
  }
}

在右侧,我有一个节点,其类型为
kind=265
(ImportSpecifier)。如何使用对象的文本值从it节点获取?使用方法
checker.getSymbolAtLocation(node)
返回
未定义的

而不是获取导入说明符的符号,它可以获取导入说明符名称(标识符)的符号。但这只是MyComponent.tsx中的本地符号,因此您需要从中获取别名符号,在本例中,它将引导您在const.ts中找到
defaultProps
变量声明:

const symbol = checker.getSymbolAtLocation(importSpecifier.name)!;
const aliasedSymbol = checker.getAliasedSymbol(symbol);
const varDecl = aliasedSymbol.getDeclarations()![0];

// outputs the `defaultProps` variable declaration
console.log(varDecl.getText());

如何使用编译器API?只是好奇。非常有趣的话题汉克斯,这正是我需要的!
const symbol = checker.getSymbolAtLocation(importSpecifier.name)!;
const aliasedSymbol = checker.getAliasedSymbol(symbol);
const varDecl = aliasedSymbol.getDeclarations()![0];

// outputs the `defaultProps` variable declaration
console.log(varDecl.getText());