问题描述
在我的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 (将#修改为@)