你把eslint检查配上吧,这样能避免不少问题。简单来说,declare并不是用于JS的,而是给语法检查工具用的。例如const a = 5; // 这一句是真正的变量声明 declare a: number; // declare只是告诉语法工具 a 这个类型已经定义了由于类型声明(type, interface)并不属于JS,所以可以使用declare,有的包不支持ts时安装@types/包名就能得到类型声明就是这个原因。但是enum不是类型声明,所以你这样用就错了,enum必须export,然后再import使用才可以。declare namespace似乎已经要淘汰了,我猜可能就是容易混淆的原因,我现在都用declare module了,其中只能包含语法声明。
你把eslint检查配上吧,这样能避免不少问题。
简单来说,declare并不是用于JS的,而是给语法检查工具用的。例如
由于类型声明(type, interface)并不属于JS,所以可以使用declare,有的包不支持ts时安装@types/包名就能得到类型声明就是这个原因。
但是enum不是类型声明,所以你这样用就错了,enum必须export,然后再import使用才可以。
declare namespace似乎已经要淘汰了,我猜可能就是容易混淆的原因,我现在都用declare module了,其中只能包含语法声明。