Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加typescript导入可防止编译到单个js文件_Javascript_Gruntjs_Typescript - Fatal编程技术网

Javascript 添加typescript导入可防止编译到单个js文件

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

我正在使用GruntTypeScript从一组ts文件生成一个js文件。在我将import语句添加到其中一个ts文件之前,这一切都很正常

grunt类型脚本配置示例

    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,那么使用起来就更容易了,而且在发布的时候您仍然可以使用它