TypeScript导出导入约定

时间:2017-03-10 16:28:44

标签: javascript java typescript conventions

与Java(和其他语言)相比,TypeScript为您提供了多种导出和导入内容的方法(类,函数等)。
例如,每个文件可以export多个类,常量,函数等 您还可以为每个文件定义1个默认导出 另一方面,您import只能使用默认export,使用别名导入所有内容或导入给定的内容。
来自Java,我想知道,是否有任何约定,特别是关于constantfunction s。 假设我有一个util-file,有很多function s。在Java中,我将使用File创建一个Util.java class Util,其中包含所有static function个。 在TypeScript我有以下可能性:

  1. 导出每个功能并使用import * as Util
  2. 导入
  3. 使用class Util创建static function并仅导出此类。
  4. 在这两种情况下,我都可以使用Util.functionName()调用函数,就像在java中一样。

    另一种情况是class只有constant个。{ 例如,我有class Car字段type。可用的type也有常量,例如TYPE_SUVTYPE_SPORT等。

    同样,我可以将它们定义为“顶级”常量并导出它们和类Car。但我也可以在public static readonly - 类中将它们定义为Car并仅导出该类 如果我需要其他文件中的所有常量,那么使用第一种方法,我会得到一个非常大的import语句。子类也不会“继承”这些常量 但是,使用readonly代替const对我来说有点奇怪......

    所以我一直在寻找某种约定,但我找不到多少 我只找到了一些像this这样的提示。

    那么,在TypeScript中是否有关于导出和导入的指导原则,这些指南会解决所解释的问题?关于工具集成(重构,自动导入,组织导入等),我也在寻找最好的方法。

    感谢。

1 个答案:

答案 0 :(得分:1)

(我担心这会有点基于意见,尽管选择一个在另一个上有客观要素)

  
      
  1. 导出每个函数并使用import *作为Util。
  2. 导入它   
  3. 使用静态函数创建一个类Util,并仅导出此类。
  4.   

我更喜欢数字1)因为2)没有带来任何好处,并且可能导致有人无缘无故地实例化Util类(与Java相反,这是无法阻止的)。

  

我可以将它们定义为“顶级”常量并导出它们和类Car。但我也可以在Car-class中将它们定义为public static readonly并仅导出该类。

关于常量,readonly修饰符仅适用于编译时。因此,作为类属性,它们仍然可以在运行时进行修改。因此,我更喜欢在模块(文件)

中使它们成为顶级常量

Basarat的优秀手册也是我的“参考资料”,我与默认出口分享了他的意见,除了指定的出口之外,它没有带来太多的混淆,也可以在导入时重命名。

import { OriginalName as MyPreferredName}  from './OriginalName'