声明文件中的全局声明、模块扩充与环境模块应如何区分
简答题中等799 次浏览
参考答案与解析
# 核心结论
三者应按“运行时对象从哪里来”区分,而不能只看 declare module 的写法。全局声明描述无需任何导入就真实存在于全局环境中的值或类型;模块扩充用于补充一个已经存在、能够被模块解析器找到的模块;环境模块用于描述运行时可加载、但当前没有类型声明的模块或资源。声明文件只能描述运行时事实,不能创建变量、安装方法或实现模块。若声明与真实运行时不一致,代码即使通过类型检查,执行时仍会失败。
# 底层机制
不含顶层 import 或 export 的声明文件通常按脚本处理,其顶层声明可能进入全局作用域。例如宿主确实注入了全局变量时,可以用 declare const 描述它。含有顶层 `imp
