gpt4 book ai didi

typescript 编译器 API : How to get fully qualified name of type without absolute path?

转载 作者:行者123 更新时间:2023-12-04 11:04:05 25 4
gpt4 key购买 nike

我正在尝试使用 TypeScript 的 TypeChecker API 创建一个处理特定类型的工具。我需要唯一标识特定类型 - 比如 Angular 的 DomSanitizer 来自 @angular/platform-browser包裹。我有以下代码来获取类型的完全限定名称

let type = typeChecker.getTypeAtLocation(node);
let fqn = typeChecker.getFullyQualifiedName(type.getSymbol());
但是,这将返回包含 node_modules 的绝对路径的名称。目录,比如 "/home/user/project/node_modules/@angular/platform-browser/platform-browser".DomSanitizer我想删除特定于项目的部分,只有类似 @angular/plaform-browser/platform-browser.DomSanitizer 的内容.我更喜欢使用 TypeScript API 而不是对这个值做一些字符串操作,因为我希望 API 更健壮。

最佳答案

如果你知道项目根是什么,你可以使用 NodeJS's path.relative 方法:

import * as path from 'path'

const type = typeChecker.getTypeAtLocation(node);
const fqn = typeChecker.getFullyQualifiedName(type.getSymbol());

const projectRoot = '/home/user/project/node_modules/'
const relativePath = path.relative(projectRoot, fqn)
console.log(relativePath) // should print @angular/plaform-browser/platform-browser.DomSanitizer

关于 typescript 编译器 API : How to get fully qualified name of type without absolute path?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67702391/

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