通过 dojo 加载自定义 Typescript class 无效

Loading in a custom Typescript class through dojo not working

我有一个自定义 class,我想开始使用 Dojo 加载程序。我看起来很接近,但是注入的东西似乎有问题。

我的 dojoConfig 指向正确的脚本,这工作正常。如果打字稿文件包含 JUST 语句,它会起作用,它会触发它包含的任何内容。

var dojoConfig = {
    packages: [
        { name: "Viewer", location: "/scripts", main: "Viewer" }
    ],
    parseOnLoad: false
};

这是我引入自定义 class 的代码。虽然我说如果 typescript 只是语句它工作正常,但当 typescript 是 class 时,我调用构造函数的行不会出错,但它也不起作用。当我设置一个断点并检查查看器变量时,它有一些与 arcgis 相关的属性,所以这让我相信注入有问题。

我要求构造它,因为我需要在启动时传递变量。否则这真的不是问题。

        require([
            "esri/map",
            "esri/dijit/ElevationProfile",
            ...
            "dojo/domReady!",
            "Viewer"
        ], function(Map, ElevationsProfileWidget, Viewer) {
            Loader(Map, ElevationsProfileWidget, Viewer);
        });

        function Loader(Map, ElevationsProfileWidget, Viewer) {
            ...
            var viewer = new Viewer(false, false);
        }

这是上下文的打字稿class...

import TopNavToolbar = require("./TopNavToolbar");
import IdentifyTool = require("./IdentifyTool");

class Viewer
{
    topToolbar: TopNavToolbar;

    constructor(public AddMeasure: boolean, public AddIdentify: boolean) {

        console.log("constructed");
    }
}
export = Viewer;

这是它创建的 JS,如果需要的话

define(["require", "exports", "./TopNavToolbar", "./IdentifyTool"], function (require, exports, TopNavToolbar, IdentifyTool) {
    "use strict";
    var Viewer = (function () {
        function Viewer(AddMeasure, AddIdentify) {
            this.AddMeasure = AddMeasure;
            this.AddIdentify = AddIdentify;
            this.topToolbar = new TopNavToolbar('ulToolbar');
            console.log("constructed");
        }
        return Viewer;
    }());
    return Viewer;
});
//# sourceMappingURL=Viewer.js.map

它最终变得小得可笑。我不知道需要的字符串需要与将它们引入的函数参数的顺序相同。所以在这个例子中,domReady 将绑定到 Viewer。一旦我将 Viewer require 移动到 ElevationProfileWidget 下,一切都按预期工作

require([
            "esri/map",
            "esri/dijit/ElevationProfile",
            "Viewer",
            "dojo/domReady!" 
        ], function(Map, ElevationsProfileWidget, Viewer) {
            Loader(Map, ElevationsProfileWidget, Viewer);
        });

        function Loader(Map, ElevationsProfileWidget, Viewer) {
            ...
            var viewer = new Viewer(false, false);
        }