gpt4 book ai didi

TypeScript 编译器 API : how to get literal value by ImportSpecifier node?

转载 作者:行者123 更新时间:2023-12-05 03:41:54 24 4
gpt4 key购买 nike

我有两个 TypeScript 文件。

常量.ts:

export const defaultProps = {
name: 'Node'
};

我的组件.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>;
}
}

我正在使用 TypeScript 编译器 API 来解析这些文件。我对以下行感兴趣:

static defaultProps = defaultProps;

在右侧,我有带有 kind=265 (ImportSpecifier) 的节点。如何从它的节点中获取对象的字面值?使用方法 checker.getSymbolAtLocation(node) 返回 undefined

最佳答案

它不是获取导入说明符的符号,而是获取导入说明符名称(标识符)的符号。不过,这只是 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());

关于TypeScript 编译器 API : how to get literal value by ImportSpecifier node?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67530264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com