Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Module 打字稿:';找不到名称';导入类的错误_Module_Typescript_Export - Fatal编程技术网

Module 打字稿:';找不到名称';导入类的错误

Module 打字稿:';找不到名称';导入类的错误,module,typescript,export,Module,Typescript,Export,我有一个文件a.ts,其中包含模块内的a类: module moduleA { export class A { } } export = moduleA.A; 和另一个导入A类的文件b.ts: import A = require('a.ts'); class B { // This leads to an error: Cannot find name 'A' private test: A = null; constructor() { // Bu

我有一个文件a.ts,其中包含模块内的a类:

module moduleA {

  export class A {
  }

}

export = moduleA.A;
和另一个导入A类的文件b.ts:

import A = require('a.ts');

class B {

  // This leads to an error: Cannot find name 'A'
  private test: A = null;

  constructor() {
    // But this is possible
    var xyz = new A();
  }
}
有趣的是,当我想在B中使用A作为类型时,Typescript显示了一个错误。然而,实例化A不会导致错误

谁能解释一下,为什么会这样?
多谢各位

不需要使用名称空间
模块a
。。。你可以这样做

关键字
模块
现在与名称空间(C#)同义。。。最佳实践是使用ES6风格的模块结构,基本上每个文件都是一个模块,导出您需要的内容,并从其他地方导入您需要的内容

// a.ts
export class A {}

// b.ts
import { A } from './a';
class B {
  private test: A = null; // will not error now
  constructor () {
    var xyz = new A();
  }
}

注意:这是基于TypeScript v1.5+

的,非常感谢您的回答!虽然我需要这样的模块结构,因为我有变量,它们必须在类A之外,但在模块内部。你不认为我的解决方案在理论上应该是这样工作的吗?@user986305如果你按照Brocco的方式做事,你应该仍然能够在类外声明变量,但在同一个文件中声明变量。@JKillian是正确的,这些变量将包含在该文件/模块的范围内,而不会从外部泄漏。谢谢JKilian和Brocco!以前,我在不同的文件中使用了一个变量“dependencies”。然而,Typescript一直告诉我变量“dependencies”已经用另一种类型(在另一个文件中)声明了。现在,我删除了您描述的模块,它似乎可以正常工作。我不知道Typescript以前是否没有同步,或者现在是否可以工作,因为我更新了它。无论如何,对我来说,上述问题还没有真正解决。你怎么认为?