TypeScript和AMD模块系统在输出上给出了一些混乱

时间:2017-03-11 13:17:08

标签: javascript asp.net-mvc typescript requirejs amd

我没有ts类和枚举的层次结构:
实体/枚举/ CardClassification.ts

export enum CardClassification {
   None,
   Domestic,
   // Other one
}

实体/枚举/ CardState.ts

export enum CardState {
    InProgress = 1,
    Finished = 2,
    Canceled = 4
}

实体/枚举/ CardTimeType.ts

export enum CardTimeType {
    XTimesPerPeriod = 1,
    XMinutesPerPeriod = 2,
}

实体/ Card.ts

import { CardState } from "./enums/CardState";
import { CardTimeType } from "./enums/CardTimeType";
import { CardClassification } from "./enums/CardClassification";

export class Card {
    public State: CardState;
    public TimeType: CardTimeType;
    public Classification: CardClassification;
}

我有一些打字机可以使用这些实体: card-controller.ts

/// <reference path="../typings/jquery/jquery.d.ts" />
/// <reference path="../typings/bootstrap/index.d.ts" />

import { Card } from "../entities/Card";
import { CardClassification } from "../entities/enums/CardClassification";

$(() => {
    // Do some work here
})

我使用的是AMD模块系统和6个ECMAscript版本。我还添加了require.js。 在网页加载时我已经重新发现了2个错误: 对于Card.ts:

Uncaught Error: Mismatched anonymous define() module: function (require, exports) {
    "use strict";
    class Card {
    }
    exports.Card = Card;
}
http://requirejs.org/docs/errors.html#mismatch
    at makeError (require.js:168)
    at intakeDefines (require.js:1254)
    at require.js:1452

CardClassification.ts也是如此:

Uncaught Error: Mismatched anonymous define() module: function (require, exports) {
    "use strict";
    var CardClassification;
    (function (CardClassification) {
        CardClassification[CardClassification["None"] = 0] = "None";
        CardClassification[CardClassification["Domestic"] = 1] = "Domestic";
    })(CardClassification = exports.CardClassification || (exports.CardClassification = {}));
}
http://requirejs.org/docs/errors.html#mismatch
    at makeError (require.js:168)
    at intakeDefines (require.js:1254)
    at require.js:1452

此外,我检查生成的.js文件,这里真的有点乱,看看: 1)card-controller.js

/// <reference path="../typings/jquery/jquery.d.ts" />
/// <reference path="../typings/bootstrap/index.d.ts" />
define(["require", "exports", "../entities/enums/CardClassification" <-- What is here!?], function (require, exports, CardClassification_1) {
    "use strict";
    $(() => {
        // Do some stuff
        });
    });
});
//# sourceMappingURL=card-controller.js.map

查看“../entities/enums/CardClassification”字符串。我对TypeScript,JS,RequireJS以及所有这些东西都很满意。它应该在这里吗?

2)card.js

define(["require", "exports"], function (require, exports) {
    "use strict";
    class Card {
    }
    exports.Card = Card;
});
//# sourceMappingURL=Card.js.map

card.js是空的!这里没有任何输出js。 这个东西怎么了?

更新
tsconfig.json:

{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es6",
    "module": "amd"
  },
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

0 个答案:

没有答案