【问题标题】:Typescript, how to use class as type for an argument打字稿,如何使用类作为参数的类型
【发布时间】:2016-06-18 16:04:29
【问题描述】:

我正在尝试了解打字稿的工作原理。 我有类文件,例如:

export class Aclass {

}

另外一个文件里还有另一个类:

export class Bclass {

    constructor(private a:Aclass) {

    }
}

这给出了关于未解析类型的错误。 这样做的正确方法是什么?

更新:有没有办法避免在所有文件中导入?

【问题讨论】:

  • 你也需要在你的 Bclass 文件中导入它。在 es6 模块上查看此链接。 exploringjs.com/es6/ch_modules.html
  • 所以我需要一直在所有文件中导入?还有其他方法吗?
  • 好的,但是如果我用接口制作模块呢?它实际上是我需要的。但在这种情况下,我不明白如何导入类以在角度中使用它。
  • 我的意思是这样导出接口 IMessagesService 扩展 MessagesService{}
  • 我不确定你的意思.. 你可以导出任何你想要的东西.. 也可以导入它。如果您对特定问题有疑问,请也针对该问题提出问题。 :)

标签: class types typescript


【解决方案1】:

您需要将 Aclass 导入到 Bclass 文件中,如下所示:

///Bclass.js
import Aclass = require('./Aclass.js') //require should be relative path to Aclass from Bclass

export class Bclass {

    constructor(private a:Aclass) {

    }
}

请参阅 TypeScript 文档的“走向外部”部分:http://www.typescriptlang.org/Handbook

【讨论】:

    【解决方案2】:

    您可以使用命名空间,也就是内部模块。每个命名空间都会创建一个全局变量,所以我不推荐它。使用导出和导入的外部模块是更好的方法。如果必须使用命名空间:

    file1.ts:

    namespace main {
        export class First{
        name: string;
      }
    }
    

    file2.ts

    namespace main {
      class Two {
        second: First;
    
        constructor() {
          this.second = new First();
          this.second.name = 'second name';
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-11
      • 1970-01-01
      • 2018-05-02
      • 2021-06-17
      • 1970-01-01
      • 2023-03-30
      • 2019-07-09
      • 2017-06-09
      • 1970-01-01
      相关资源
      最近更新 更多