与此相反的Java(和其他语言),打字稿为您提供多种方式来导出和导入的东西(类,函数等)。
例如,您可以按文件export
多个类,常量,函数等。
您还可以定义每个文件1默认的导出。
在另一边,你可以import
只有默认export
,使用别名导入所有或导入给定的东西。
从Java的到来,我想知道,如果有任何约定,特别是关于constant
s和function
s。
比方说,我有一个实用程序文件,有很多function
s的。在Java中我会创建一个File
Util.java
class Util
,其中包含所有static function
s。
在TypeScript
我有以下几种可能:
import * as Util
导入。class Util
s和出口仅此一等级static function
。在这两种情况下,我可以使用Util.functionName()
,就像在Java调用函数。
另一种情况是有一些class
s一个constant
。
比如我有一个字段class Car
一个type
。也有对可用type
s常量,像TYPE_SUV
,TYPE_SPORT
等。
同样,我可以将它们定义为“顶级”常量和导出,然后类Car
。但我也可以将它们定义为public static readonly
级内Car
,只导出类。
使用第一种方式,我将有一个大的柠声明import
,如果我需要在其他文件中所有的常量。此外子类不会“继承”这些常数。
然而,使用readonly
代替const
感觉有种奇怪,我...
所以我一直在寻找某种约定的,但我没有找到太多。
我只找到像this
的一些提示。
那么,是否有关于出口和进口打字稿任何指引,其照顾有关解释的问题?我也在寻找最好的方式,对于工具(重构,自动导入,组织进口等)的集成。
谢谢。
(恐怕这是有些意见基础去虽然有在选择一个比另一个客观因素)
- 导出的每一个功能和使用进口*作为的Util导入。
- 创建静态函数和出口只有这个类的类的Util。
我更喜欢1号),因为2)不会带来任何好处,并可能导致有人实例化Util
类无缘无故(,反之为Java,这不能阻止)。
我可以将它们定义为“顶级”常量和导出,然后类汽车。但我也可以将它们定义为汽车级内
public static readonly
,只导出类。
至于常量,则readonly
修改只适用在编译的时候。因此,作为类属性,它们仍然可以在运行时修改。我,所以,宁愿让他们在模块中顶级常数(文件)
从Basarat优秀的手册也是我的“参考”和我分享他的默认出口不带来多少除了困惑,因为与命名出口的意见,也可以如在进口重命名
import { OriginalName as MyPreferredName} from './OriginalName'