Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Angularjs t配置模块选项-执行和#x27;系统&x27;参考SystemJS?_Angularjs_Angular_Typescript_Module - Fatal编程技术网

Angularjs t配置模块选项-执行和#x27;系统&x27;参考SystemJS?

Angularjs t配置模块选项-执行和#x27;系统&x27;参考SystemJS?,angularjs,angular,typescript,module,Angularjs,Angular,Typescript,Module,在tsconfig.json文件中,可以将以下选项指定为compilerOptions“module”属性的值: System 因此,我们得到: { "compilerOptions": { "module": "System", ... 系统是否引用SystemJS(即,如果SystemJS被用作模块加载器,那么当我创建AngularJS或Angular应用程序时,我的tsconfig.json中是否总是需要“System”?文档似乎没有解释这一点: 在TypeSc

在tsconfig.json文件中,可以将以下选项指定为compilerOptions“module”属性的值:

System
因此,我们得到:

{
  "compilerOptions": {
    "module": "System",
     ...
系统是否引用SystemJS(即,如果SystemJS被用作模块加载器,那么当我创建AngularJS或Angular应用程序时,我的tsconfig.json中是否总是需要“System”?文档似乎没有解释这一点:


在TypeScript的Visual Studio项目配置中,在“TypeScript构建>模块系统”下还有一个“系统”选项,它显然是指与tsconfig.json中的“系统”相同的东西。

是的,它指的是SystemJS,如果希望TypeScript编译器按照预期的方式运行并生成预期的代码,则显式地包含它非常重要。如果不指定,TypeScript将恢复为基于当前
目标
ES版本(默认情况下
ES3
,触发
commonjs
模块)生成(并期望)代码。如编译器文档中所述,它将影响其他默认编译器选项,如
moduleResolution
allowSyntheticDefaultImports

例如,如果您有一个typescript文件,如下所示

import { functionA } from './moduleA';
functionA();
如果将
模块
指定为
系统
,则生成的代码将用于系统调用:

System.register(["./moduleA"], function (exports_1, context_1) {
    "use strict";
    var __moduleName = context_1 && context_1.id;
    var moduleA_1;
    return {
        setters: [
            function (moduleA_1_1) {
                moduleA_1 = moduleA_1_1;
            }
        ],
        execute: function () {
            moduleA_1.functionA('Stuff');
        }
    };
});
但是,如果允许编译器默认设置为
commonjs
,它将生成:

"use strict";
var moduleA_1 = require('./moduleA');
moduleA_1.functionA('Stuff');
注:生成的代码可能因TS版本或其他标志而异


来自测试/经验以及您链接的和文档。

是的,是SystemJS谢谢Greg,请您引用这些文档中澄清系统选项指SystemJS的部分好吗?当在tsconfig.json中为“amd”(这是一个通用概念)、“system”(你说的是SystemJS(一个特定的系统)和es2015(这是一个标准)设置“module”的值时,我对为什么在Visual Studio中有intellisense选项感到困惑!这毫无意义你可能对我关于CommonJS的问题感兴趣-我在我的帖子中补充道。模块解析文档直接链接到“基本Url”和“路径映射”下的SystemJS文档。我承认这仍然是推断,但生成的代码显然使用了SystemJS接口。我承认这很混乱,但是有一堆库/标准正在被采纳。