微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编译和捆绑打字稿 - 标识符“ComponentMap”已经声明

如何解决编译和捆绑打字稿 - 标识符“ComponentMap”已经声明

我正在尝试从一个普通的 JS 应用程序转向学习 Typescript 并使用它作为我的网络应用程序。

我有多个 TS 文件,我从中导入模块,例如:

import ComponentMap from "./Components/ComponentMap";

我使用 gulpgulp-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");
    }
}

这是使用以下 tsconfig.json 文件构建的:

{
    "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 举报,一经查实,本站将立刻删除。