如何在ts-loader自定义插件中初始化TypeChecker?

问题描述

在我的webpack.config.js文件中,我像这样加载ts-loader:

  {
                test: /\.tsx?$/,loader: 'ts-loader',exclude: /node_modules/,options: {
                    getCustomTransformers: program => {
                        return {
                      before: [
                          StringTransformer(program),],}
                },transpileOnly: true,compilerOptions: {
                      sourceMap: true
                    }
                  }
            },

我通过以下方式初始化StringTransformer

var transformer = function(typechecker) {
  return function (context) {
     var visitor = function (node) {
     const typeCheck = typechecker.getTypeAtLocation(node);
     console.log('type ',typeCheck);
     return ts.visitEachChild(node,visitor,context);
  };
  return function (node) {
    return ts.visitNode(node,visitor);
  };
};
}

var StringTransformer = function(program) {
  const typeChecker = program.getTypeChecker();
  return transformer(typeChecker);
}
exports["default"] = StringTransformer;

运行构建时,我希望在console.log中看到我拥有的所有不同类型的节点。 相反,我主要看到typeCheck.intrinsicName等于“错误”。 (有时有“数字”和“字符串”,但我定义的接口都不存在,并且未根据预期的类型分析变量/表达式) 好像我传递给转换器的program var没有足够的信息来创建正确的TypeChecker实例。

我在做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...