作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个 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/
我有两个 TypeScript 文件。 常量.ts: export const defaultProps = { name: 'Node' }; 我的组件.tsx: import * as R
我是一名优秀的程序员,十分优秀!