ts declare namespace 中enum 报 is not defined?

image.png

image.png

image.png

把enum 去掉就可以,用enum 就报错

阅读 4.7k
1 个回答

你把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了,其中只能包含语法声明。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进