TypeScript 实现缺失的成员有时会写出不可访问的类型

nr7wwzry  于 3个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(46)

目前,我们为实现类 C 的缺失成员提供了一个代码修复。然而,C 是不可访问的,生成的代码将类似于以下内容

function foo() {
  abstract class C {
    abstract myMethod(): C;
  }

  return C;
}

class D extends foo() {
  myMethod(): C {
    throw new Error('Method not implemented.');
  }

}

这是无效的。
我认为代码修复不应该被提供。

s1ag04yj

s1ag04yj1#

我的思绪飘向了别处。这与添加导入无关。
我们在提取方法中编写了检测此类问题的代码。如果我们能利用这一点,那就太好了。

6yt4nkrj

6yt4nkrj2#

对于想要修复这个问题的人的注意事项(因为我对这个问题没有太大兴趣):

  1. 这个属性应该检查所使用的所有符号是否可访问。
  2. 可能可以使用 checker.isSymbolAccessible 来检查这类问题。
  3. 需要遍历所有类型参数、参数和返回类型,以检查它们是否使用了任何不可访问的符号。

相关问题