如何解决编译和捆绑打字稿 - 标识符“ComponentMap”已经声明
我正在尝试从一个普通的 JS 应用程序转向学习 Typescript 并使用它作为我的网络应用程序。
import ComponentMap from "./Components/ComponentMap";
我使用 gulp 和 gulp-typescript 来编译我的 TS 文件,然后 gulp-concat 来组合所有编译的 typescript JS 文件变成一个 site.js
。
这是编译和连接的javascript的输出:
import ComponentMap from "./Components/ComponentMap";
class HarvisteadApp {
bindComponents() {
console.log('bind components');
let elems = document.querySelectorAll('[e-comp]');
elems.forEach(elem => {
this.bindComponent(elem);
});
}
bindComponent(elem) {
let compName = elem.getAttribute('e-comp');
console.log(compName);
let comp = ComponentMap.get(compName,elem);
console.log(comp);
comp.bindUI();
}
}
console.log('Init...');
const app = new HarvisteadApp();
app.bindComponents();
export default class BaseComponent {
constructor(elem) {
elem = elem;
}
}
import LivestockForm from './LivestockForm';
export default class ComponentMap {
static get(componentName,elem) {
switch (componentName) {
case "LivestockForm":
return new LivestockForm(elem);
default:
return null;
}
}
}
import BaseComponent from "./BaseComponent";
export default class LivestockForm extends BaseComponent {
bindUI() {
console.log("binding livestock form component");
}
}
{
"compilerOptions": {
"noImplicitAny": true,"sourceMap": false,"outDir": "./wwwroot/src/dist/","types": ["node"],"target": "ES6"
},"include": ["./wwwroot/src/**/*"],"exclude": ["node_modules","**/*.spec.ts"]
}
还有我的吞咽任务:
function site_scripts() {
var tsProject = ts.createProject('tsconfig.json');
var tsResult = gulp.src("./wwwroot/src/**/*.ts") // or tsProject.src()
.pipe(tsProject());
return tsResult.js.pipe(concat('site.js')).pipe(gulp.dest('./wwwroot/js/'));
}
我得到的错误是 Identifier 'ComponentMap' has already been declared
- 第 29 行 - 指向以下行:export default class ComponentMap {
我怀疑这个问题更多地与 javascript 文件的构建和连接有关。我无法删除 import 语句,因为 TypeScript 然后无法编译。这是否与我编译多个较小的文件然后将其连接成一个大文件有关,还是我在构建过程中遗漏了其他内容?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。