TypeScript:导入的模块类不可见

2024-03-02

我正在使用多个模块测试打字稿编译器,这些模块将被编译为 AMD 模块。

我有一个模块“测试”和一个将使用它的单独文件

test.ts:

export module test {
'use strict';

  export class Person {
      age:number = 0;
      sin:number = 1;
  }

  var pp = new Person();

}

test.ts 声明模块“test”并将其导出。 文件编译并且 js 输出符合预期:

test.js:

define(["require", "exports"], function(require, exports) {
(function (test) {
    'use strict';
    var Person = (function () {
        function Person() {
            this.age = 0;
            this.sin = 1;
        }
        return Person;
    })();
    test.Person = Person;        
    var pp = new Person();
})(exports.test || (exports.test = {}));
var test = exports.test;
})

现在在同一文件夹中有 test2.ts 将使用模块“test”

测试2.ts:

///<reference path="test.ts"/>

import TT = module("test");

var p = TT.Person;

编译器在这里抱怨:

src/ts/test2.ts(5,11):类型“TT”的值上不存在属性“Person”

输出的 js 文件似乎是正确的: 测试2.js:

define(["require", "exports", "test"], function(require, exports, __TT__) {
  ///<reference path="test.ts"/>
  var TT = __TT__;

  var p = TT.Person;
})

编译器版本是:

0.8.2.0

命令行是:

tsc --comments --declaration --target ES5 --module AMD $FilePath$

这里编译器有什么问题?

thanks.


这是您需要的代码...

import TT = module("test");

var p = new TT.test.Person();

以及一个快速的解释。

当您使用 AMD 或 CommonJS 加载模块并且您正在使用import语句,你不需要使用reference评论。这import做你需要的一切。

另外,文件本身就是模块,所以TT在你的代码中代表test.ts。该文件(这是一个模块)的内部是另一个显式调用的模块test,所以实际上你有这样的结构:test.test.Person.

您可以选择仅使用文件模块而不添加另一个嵌套模块,如下所示:

test.ts

export class Person {
    age:number = 0;
    sin:number = 1;
}

var pp = new Person();

这将允许您使用非嵌套版本,即:

import TT = module("test");

var p = new TT.Person();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript:导入的模块类不可见 的相关文章

随机推荐