小编Seb*_*idt的帖子

TypeScript 编译器 API:如何使用解析的类型参数获取类型?

我想合并 .dt.s 文件中的类声明以生成更清晰的公共 API。我被困在如何使用泛型类型参数来完成这项工作。假设我有:

class A1<T> { // Non-exported class I want to hide
  data?: T;
}

export class B1 extends A1<string> {
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想把它变成:

export class B1 {
  data?: string;
}
Run Code Online (Sandbox Code Playgroud)

我可以获取 的类型A1,然后复制其成员。A1但是如何获得使用string而不是的解析版本呢T

作为参考,这是我当前的代码:

for (const heritageClause of node.heritageClauses) {
  for (const type of heritageClause.types) {
    if (isExported(type.modifiers)) {
      exportedTypes.push(type);
    } else {
      const privateType = typeChecker.getTypeAtLocation(type);
      if (privateType?.symbol?.members) {
        privateType.symbol.members.forEach((definition, memberName) => {
          if (!currentMembers || !currentMembers.has(memberName)) {
            additionalMembers.push(...definition.declarations);
           } …
Run Code Online (Sandbox Code Playgroud)

typescript-compiler-api

6
推荐指数
1
解决办法
1642
查看次数

标签 统计

typescript-compiler-api ×1