【问题标题】:Can you export an interface by itself in Typescript?你可以在 Typescript 中自己导出一个接口吗?
【发布时间】:2016-05-19 22:01:55
【问题描述】:

我有这个代码

IDatabaseModel.ts

export interface IDatabaseModel {}

IDatabaseModels.ts

const IDatabaseModel = require('./IDatabaseModel');

export interface IDatabaseModels {
    currencies : IDatabaseModel;        
}

编译时出现错误

IDatabaseModels.ts: error TS2304: Cannot find name 'IDatabaseModel'.
  • 在 Typescript(引用)中单独导出接口是否违法?
  • 我还能如何格式化我的代码以使其正常工作?

【问题讨论】:

    标签: typescript typescript1.8


    【解决方案1】:

    看起来我上面的 require 语法需要默认导出。

    我可以将我的导入更改为像这样的 ES6:

    import {IDatabaseModel} from './IDatabaseModel';
    

    【讨论】:

      【解决方案2】:

      如果文件只包含类型声明而没有实际代码,它可能应该是可以使用引用语法导入的类型声明文件 (.d.ts)。

      IDatabaseModel.d.ts

       interface IDatabaseModel {}
      

      IDatabaseModels.ts

      /// <reference path="./IDatabaseModel.d.ts" />
      export interface IDatabaseModels {
          currencies : IDatabaseModel;        
      }
      

      【讨论】:

      • 我建议不要这样做。 import 不会污染全局空间。通过创建此引用路径,您应用中的每个模块现在都将拥有 IDatabaseModel
      【解决方案3】:

      在 TypeScript 中导出接口并不违法。

      您已经在示例中这样做了。

      虽然如果您想导出接口以在不同的应用程序中重用(单独编译)。然后,您需要为该库创建一个特定模块并指定 package.jsontypings 属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-09
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 1970-01-01
        相关资源
        最近更新 更多