我正在尝试在客户端使用我们的打字稿代码,但是在生成JS时,它将以以下内容开始每个文件:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var foo_1 = require("./some file name");
尝试在浏览器中执行时,我得到
未捕获的ReferenceError:未定义导出
如果我取消出口,它将抱怨要求。
给出一个非常简单的示例,我可以重现一下。
// create a file foo.ts and put the following in it.
export class foo{
name:string = "Thomas";
}
// create another file called test.ts and put the following in it.
import { foo } from "./foo";
console.log(new foo().name);
// tsconfig.json
{
"compilerOptions": {
"target": "es5", //defines what sort of code ts generates, es5 because it's what most browsers currently UNDERSTANDS.
"moduleResolution": "node",
"sourceMap": true,
"removeComments": true,
"noImplicitAny": false,
"lib": [
"es2016",
"dom",
"es5"
]
}
}
我正在使用Typescript 3.0.1
答案 0 :(得分:1)
默认情况下,TypeScript编译器会生成CommonJS模块,这些浏览器无法直接运行。您将需要使用module loader or bundler(例如Webpack,Browserify,Rollup或RequireJS),并设置TypeScript的module
编译器选项以生成您选择的加载程序或捆绑程序接受的模块格式。或者,如果您将TypeScript设置为生成es6
模块,则可以在最近的浏览器中使用本机模块支持。参见例如this article。