【问题标题】:Why don't I need to export/import TypeScript Interfaces?为什么我不需要导出/导入 TypeScript 接口?
【发布时间】:2018-07-02 14:13:57
【问题描述】:

我和我的同事一起创建了一个 Angular 5 应用程序。我为所有接口创建了一个文件夹,并按功能对它们进行分组。但是,我没有在它们上包含任何导出符号,并且在使用它们时,我永远不必导入它们......它们只是存在并且不会产生任何编译错误。我喜欢这种方式,因为它使代码更干净,但我只是在利用一些错误吗?我的同事以“正确”的方式做到了这一点,并且需要在他想要使用界面的任何时候导入。有任何想法吗?您应该如何创建存在于单独文件中的接口?谢谢!

【问题讨论】:

  • 如果您的文件中没有导入或导出,则它不是模块,并且您在其中定义的内容会使全局命名空间变得混乱。如果您需要在其中一个文件中导入某种类型,那您就完蛋了。如果你有两个同名的不同接口,你就完蛋了。
  • 接口只存在于编译器进行验证;它们在运行时不存在。您不需要导出/导入它们。当然可以,而且它可以更轻松地跟踪界面的位置。
  • @JB Nizet - 并非如此,因为所有接口代码都在编译时被删除。它仅存在于 IDE 中。不知道为什么我注定要将文件导入其中之一,我做得很好。有一次,我确实有 2 个接口名称相同,它确实导致了编译错误,但我不确定这不会发生。
  • Angular CLI:1.6.4 节点:9.4.0 操作系统:darwin x64
  • 看起来这是一个重复的问题。 stackoverflow.com/questions/42233987/…

标签: angular typescript


【解决方案1】:

由于它是一个 Angular 5 应用程序,我相信您正在使用 angular_cli。我在没有导出的情况下使用界面进行了检查,但是在终端中提供 Angular 项目时确实遇到了错误。请检查终端。

【讨论】:

  • 有时....我得到一个编译错误,应用程序仍然有效。但是,如果我关闭服务器并重新启动它(完全重新编译?)所有错误都会消失。
  • 是的,[link] (stackoverflow.com/questions/42233987/…) 总结了为什么这样做。作为一种好的做法,我觉得避免使用全局变量是更好的方法,因为它可能会使其他将在项目上工作的开发人员感到困惑,因为他们需要搜索接口。
猜你喜欢
  • 2021-08-09
  • 2015-08-23
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 2017-05-31
相关资源
最近更新 更多