Javascript 通过网页包从typescript导出对象并在JS中使用

Javascript 通过网页包从typescript导出对象并在JS中使用,javascript,typescript,webpack,Javascript,Typescript,Webpack,我想做的是将我用Typescript编写的一个库与Webpack2捆绑在一起,并能够使用这个库,即使使用vanilla JS。建筑运行良好,没有错误,但当使用导出的对象时,它看起来像一个空对象{} 所以我试着做以下几点: 将库绑定到Bundle.js文件中 创建一个my-js-script.js文件,将.ts文件导出的对象记录到控制台 创建index.html文件 导入bundle.js和myjsscript.js文件 提供index.html文件并在控制台中查看该对象 打字脚本文件 我认为

我想做的是将我用Typescript编写的一个库与Webpack2捆绑在一起,并能够使用这个库,即使使用vanilla JS。建筑运行良好,没有错误,但当使用导出的对象时,它看起来像一个空对象
{}

所以我试着做以下几点:

  • 将库绑定到Bundle.js文件中
  • 创建一个my-js-script.js文件,将.ts文件导出的对象记录到控制台
  • 创建index.html文件
  • 导入
    bundle.js
    myjsscript.js
    文件
  • 提供index.html文件并在控制台中查看该对象
打字脚本文件 我认为创建一个html文件来导入bundle和我的js脚本文件就足够访问
myModule
常量了。但不幸的是,这还不够

index.html 我错过了什么?或者根本就没有机会这么做?网页包的配置非常简单

var path = require("path");

module.exports = {
    entry: "./src/web-onion.ts",
    output: {
        path: path.resolve(__dirname, 'dist/'),
        filename: "bundle.js"
    },
    resolve: {
        extensions: [".webpack.js", ".web.js", ".ts", ".tsx", ".js"]
    },
    module: {
        loaders: [
            { test: /\.tsx?$/, loader: "ts-loader" }
        ]
    }
}

你不能这样做<代码>我的模块不会作为全局文件导出。如果要全局导出某些内容,请在TypeScript文件中使用:

window.something = myModule

注意:您必须扩展窗口界面或使用
(任何窗口)

您不能这样做<代码>我的模块不会作为全局文件导出。如果要全局导出某些内容,请在TypeScript文件中使用:

window.something = myModule

注意:您必须扩展窗口界面或使用
(任何窗口)

我已经尝试了您的解决方案,它部分有效。我可以在控制台中成功地记录对象,但是所有的属性和方法都封装在原型中。有没有可能通过myModule.met()而不是myModule.proto\uuuuuuu.constructor.met()访问它们?这就是JavaScript中对象的工作方式。您的意思是访问ClassA吗?您的意思是不能执行myModule.anyMethod()?因为这不是一种正常的行为。您是否尝试过调用
myModule.met()?它应该可以工作。使用TypeScript而不是JavaScript。我已经尝试过你的解决方案,它可以部分工作。我可以在控制台中成功地记录对象,但是所有的属性和方法都封装在原型中。有没有可能通过myModule.met()而不是myModule.proto\uuuuuuu.constructor.met()访问它们?这就是JavaScript中对象的工作方式。您的意思是访问ClassA吗?您的意思是不能执行myModule.anyMethod()?因为这不是一种正常的行为。您是否尝试过调用
myModule.met()?它应该可以工作。使用TypeScript而不是JavaScript。
var path = require("path");

module.exports = {
    entry: "./src/web-onion.ts",
    output: {
        path: path.resolve(__dirname, 'dist/'),
        filename: "bundle.js"
    },
    resolve: {
        extensions: [".webpack.js", ".web.js", ".ts", ".tsx", ".js"]
    },
    module: {
        loaders: [
            { test: /\.tsx?$/, loader: "ts-loader" }
        ]
    }
}
window.something = myModule