TypeScript 导出-导入约定
TypeScript export-import conventions
与 Java(和其他语言)相比,TypeScript 为您提供了多种导出和导入内容的方法(classes、函数等)。
例如,每个文件可以 export
多个 classes、常量、函数等。
您还可以为每个文件定义 1 个默认导出。
另一方面,您可以 import
仅默认 export
,使用别名导入所有内容或导入给定的内容。
来自 Java,我想知道是否有任何约定,尤其是关于 constant
s 和 function
s。
假设我有一个 util 文件,其中包含很多 function
。在 Java 中,我会用 class Util
创建一个 File
Util.java
,其中包含所有 static function
。
在 TypeScript
我有以下可能性:
- 导出每个函数并使用
import * as Util
导入它。
- 用
static function
创建一个 class Util
并仅导出这个 class。
在这两种情况下,我都可以使用 Util.functionName()
调用函数,就像在 java 中一样。
另一种情况是 class
有几个 constant
。
例如,我有一个带有字段 type
的 class Car
。可用的 type
也有常量,如 TYPE_SUV
、TYPE_SPORT
等。
同样,我可以将它们定义为 "top-level" 常量并导出它们和 class Car
。但我也可以在 Car
-class 中将它们定义为 public static readonly
并仅导出 class。
使用第一种方法,如果我需要其他文件中的所有常量,我会有一个非常大的 import
语句。另外 sub-classes 不会 "inherit" 那些常量。
但是使用 readonly
而不是 const
对我来说感觉有点奇怪......
所以我一直在寻找某种约定,但没有找到太多。
我只找到了一些提示,例如 this
。
那么,关于 TypeScript 中的导出和导入,是否有任何指南可以解决所解释的问题?我也在寻找关于工具集成(重构、自动导入、组织导入等)的最佳方法。
谢谢。
(尽管在选择一个方面有 objective 个因素,但恐怕这会有点基于意见)
- Export every single function and import it using import * as Util.
- Create a class Util with static functions and export only this class.
我更喜欢数字 1),因为 2) 没有带来任何好处,可能会导致有人无缘无故地实例化 Util
class(与 Java 相反,这不能被阻止)。
I can define them as "top-level" constants and export them and the class Car. But I can also define them as public static readonly
inside the Car-class and export that class only.
关于常量,readonly
修饰符仅在编译时适用。所以作为 class 属性,它们仍然可以在运行时修改。因此,我更愿意将它们设为模块(文件)中的顶级常量
Basarat 的优秀手册也是我的 "reference",我分享他对默认导出的看法,默认导出除了混淆之外不会带来太多,因为命名导出也可以在导入时重命名,例如
import { OriginalName as MyPreferredName} from './OriginalName'
与 Java(和其他语言)相比,TypeScript 为您提供了多种导出和导入内容的方法(classes、函数等)。
例如,每个文件可以 export
多个 classes、常量、函数等。
您还可以为每个文件定义 1 个默认导出。
另一方面,您可以 import
仅默认 export
,使用别名导入所有内容或导入给定的内容。
来自 Java,我想知道是否有任何约定,尤其是关于 constant
s 和 function
s。
假设我有一个 util 文件,其中包含很多 function
。在 Java 中,我会用 class Util
创建一个 File
Util.java
,其中包含所有 static function
。
在 TypeScript
我有以下可能性:
- 导出每个函数并使用
import * as Util
导入它。 - 用
static function
创建一个class Util
并仅导出这个 class。
在这两种情况下,我都可以使用 Util.functionName()
调用函数,就像在 java 中一样。
另一种情况是 class
有几个 constant
。
例如,我有一个带有字段 type
的 class Car
。可用的 type
也有常量,如 TYPE_SUV
、TYPE_SPORT
等。
同样,我可以将它们定义为 "top-level" 常量并导出它们和 class Car
。但我也可以在 Car
-class 中将它们定义为 public static readonly
并仅导出 class。
使用第一种方法,如果我需要其他文件中的所有常量,我会有一个非常大的 import
语句。另外 sub-classes 不会 "inherit" 那些常量。
但是使用 readonly
而不是 const
对我来说感觉有点奇怪......
所以我一直在寻找某种约定,但没有找到太多。
我只找到了一些提示,例如 this
。
那么,关于 TypeScript 中的导出和导入,是否有任何指南可以解决所解释的问题?我也在寻找关于工具集成(重构、自动导入、组织导入等)的最佳方法。
谢谢。
(尽管在选择一个方面有 objective 个因素,但恐怕这会有点基于意见)
- Export every single function and import it using import * as Util.
- Create a class Util with static functions and export only this class.
我更喜欢数字 1),因为 2) 没有带来任何好处,可能会导致有人无缘无故地实例化 Util
class(与 Java 相反,这不能被阻止)。
I can define them as "top-level" constants and export them and the class Car. But I can also define them as
public static readonly
inside the Car-class and export that class only.
关于常量,readonly
修饰符仅在编译时适用。所以作为 class 属性,它们仍然可以在运行时修改。因此,我更愿意将它们设为模块(文件)中的顶级常量
Basarat 的优秀手册也是我的 "reference",我分享他对默认导出的看法,默认导出除了混淆之外不会带来太多,因为命名导出也可以在导入时重命名,例如
import { OriginalName as MyPreferredName} from './OriginalName'