没有模块加载器的打字稿?

Cod*_*ker 17 typescript

我坚持使用一个使用aspx页面的旧软件.我有一些控件(ascx)几乎可以作为一个小的单页应用程序工作(例如,一个控件,让您注册一个时事通讯,或一个控件,让用户自定义新闻源).(我知道......它不是真正的SPA ...)

我开始在这个小型微项目中使用VUE.js.我设法使用纯JavaScript完成所有工作.

现在我想使用typescript而不是JavaScript.

我遇到的问题:当我创建我的typescripts并引用一些模块如VUE或我自己的时,它总是在生成的js文件中写入一些" require "命令(转换为ES5)或一些Import命令(如果转换为ES6).

据我所知,这些命令应该由服务器上的某些模块加载器使用.但我没有Node.Js服务器,也没有Javascript构建基础架构.有没有办法告诉打字稿只是忽略这些命令?然后,我将手动引用所需的JS-genereated文件,其中的模块不包含在ascx-control中.

And*_*uca 13

在你tsconfig.jsonmodule财产应该是none

{
    "compilerOptions": {
        "module": "none",
    }
}
Run Code Online (Sandbox Code Playgroud)

现在没有更多amdsystem代码.现在你不能再使用importexport陈述了.

如果没有这个,TypeScript不知道脚本的顺序,你可以有Js未定义的错误.

要解决这个问题,只需添加一个tripple斜杠指令而不是import语句

现在TypeScript以正确的顺序编译所有脚本.
也可以使用outFile而不是out因为不推荐使用.

  • 在我的用例中,我得到 `src/errors.ts:25:14 - 错误 TS1148:当 '--module' 为 'none' 时,不能使用导入、导出或模块扩充。25 export class AttributeError extends Error {` when using `'module': 'none'`。我该如何解决? (2认同)

tos*_*skv 4

当然可以。您只需配置 tsc 即可输出代码,而无需模块加载器语句。

例如,将所有代码放入一个大文件中。

{
    "compilerOptions": {
        "target": "es5",
        "outFile": "www/js/bundle.js",
        "sourceMap": true,
        "declaration": true,
        "removeComments": true,
        "sourceRoot": ""
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能会限制您对 ES6 import 语句的使用。您可能必须改用打字稿定义的命名空间


归档时间:

查看次数:

6084 次

最近记录:

7 年,7 月 前