如何为客户翻译打字稿

时间:2018-09-10 15:40:24

标签: typescript

我正在尝试在客户端使用我们的打字稿代码,但是在生成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

1 个答案:

答案 0 :(得分:1)

默认情况下,TypeScript编译器会生成CommonJS模块,这些浏览器无法直接运行。您将需要使用module loader or bundler(例如Webpack,Browserify,Rollup或RequireJS),并设置TypeScript的module编译器选项以生成您选择的加载程序或捆绑程序接受的模块格式。或者,如果您将TypeScript设置为生成es6模块,则可以在最近的浏览器中使用本机模块支持。参见例如this article