与Java(和其他语言)相比,TypeScript为您提供了多种导出和导入内容的方法(类,函数等)。
例如,每个文件可以export
多个类,常量,函数等
您还可以为每个文件定义1个默认导出
另一方面,您import
只能使用默认export
,使用别名导入所有内容或导入给定的内容。
来自Java,我想知道,是否有任何约定,特别是关于constant
和function
s。
假设我有一个util-file,有很多function
s。在Java中,我将使用File
创建一个Util.java
class Util
,其中包含所有static function
个。
在TypeScript
我有以下可能性:
import * as Util
。class Util
创建static function
并仅导出此类。 在这两种情况下,我都可以使用Util.functionName()
调用函数,就像在java中一样。
另一种情况是class
只有constant
个。{
例如,我有class Car
字段type
。可用的type
也有常量,例如TYPE_SUV
,TYPE_SPORT
等。
同样,我可以将它们定义为“顶级”常量并导出它们和类Car
。但我也可以在public static readonly
- 类中将它们定义为Car
并仅导出该类
如果我需要其他文件中的所有常量,那么使用第一种方法,我会得到一个非常大的import
语句。子类也不会“继承”这些常量
但是,使用readonly
代替const
对我来说有点奇怪......
所以我一直在寻找某种约定,但我找不到多少
我只找到了一些像this
这样的提示。
那么,在TypeScript中是否有关于导出和导入的指导原则,这些指南会解决所解释的问题?关于工具集成(重构,自动导入,组织导入等),我也在寻找最好的方法。
感谢。
答案 0 :(得分:1)
(我担心这会有点基于意见,尽管选择一个在另一个上有客观要素)
- 导出每个函数并使用import *作为Util。
导入它- 使用静态函数创建一个类Util,并仅导出此类。
醇>
我更喜欢数字1)因为2)没有带来任何好处,并且可能导致有人无缘无故地实例化Util
类(与Java相反,这是无法阻止的)。
我可以将它们定义为“顶级”常量并导出它们和类Car。但我也可以在Car-class中将它们定义为
public static readonly
并仅导出该类。
关于常量,readonly
修饰符仅适用于编译时。因此,作为类属性,它们仍然可以在运行时进行修改。因此,我更喜欢在模块(文件)
Basarat的优秀手册也是我的“参考资料”,我与默认出口分享了他的意见,除了指定的出口之外,它没有带来太多的混淆,也可以在导入时重命名。
import { OriginalName as MyPreferredName} from './OriginalName'