Javascript 添加typescript导入可防止编译到单个js文件
我正在使用GruntTypeScript从一组ts文件生成一个js文件。在我将import语句添加到其中一个ts文件之前,这一切都很正常 grunt类型脚本配置示例Javascript 添加typescript导入可防止编译到单个js文件,javascript,gruntjs,typescript,Javascript,Gruntjs,Typescript,我正在使用GruntTypeScript从一组ts文件生成一个js文件。在我将import语句添加到其中一个ts文件之前,这一切都很正常 grunt类型脚本配置示例 typescript: { server: { src: ["./ts/file1.ts", "./ts/file2.ts"], dest: "./js/out.js", options: { module
typescript: {
server: {
src: ["./ts/file1.ts", "./ts/file2.ts"],
dest: "./js/out.js",
options: {
module: 'amd', //or commonjs
target: 'es5', //or es3
basePath: '',
sourcemap: false,
declaration: false,
ignoreError: false
}
}
}
如果我在file2.ts的顶部添加导入语句,例如
import PG = require("pg");
然后,我得到了File1.ts中的代码找不到File2.ts中定义的类型的错误,并且在/ts目录中生成了一个意外的File2.js,忽略了dest file参数。导入似乎导致它完全单独编译File2.ts
导入时会出现这种情况吗?或者我如何修复这种情况以创建预期的单个js文件而不出现编译错误?一旦导入AMD模块或从任何内部模块外部导出,您的文件将被编译为AMD模块。AMD和单文件编译本质上是不同的工作模式,不喜欢混合使用。要了解内部和外部模块,请查看 从技术上讲,您仍然可以使用标准JavaScript方法导入AMD模块,但这很尴尬。例如,使用DefinitelyTyped中的文件:
/// <reference path="require.d.ts"/>
require(["somemodule"], (SomeModule: namespace.SomeModule) => {
// async code called after the module is retrieved
});
//
require([“somemodule”],(somemodule:namespace.somemodule)=>{
//检索模块后调用的异步代码
});
如果没有导入
关键字TypeScript,则不会满足您的需求,而是让您自己处理
或者,我会建议去完全AMD。如果您的任何库都是AMD,那么使用起来就更容易了,而且在发布的时候您仍然可以使用它