如何在TypeScript模块或包中仅引入console全局变量?
如何在TypeScript模块或包中仅引入console全局变量?
嗨,我太懂你的困扰了!写一个不依赖DOM或Node环境的通用脚本时,把tsconfig.json里的types设为[]确实能有效避免不小心用到环境专属的全局变量,但没想到console居然也被归到这类里了,连基本的控制台输出都没法用,真的挺闹心的。
其实你可以通过自定义类型声明文件的方式,精准引入console而不带任何冗余内容,操作起来很简单:
- 在项目里新建一个比如
console.d.ts的类型声明文件,然后写入你需要的console方法定义,比如:
declare var console: { log: (...args: any[]) => void; error: (...args: any[]) => void; warn: (...args: any[]) => void; info: (...args: any[]) => void; // 按需添加你要用的其他console方法即可 };
- 确保这个声明文件在TypeScript的扫描范围内,要么把它放进
tsconfig.json的include数组指定的路径里,要么直接放在项目根目录(默认会被自动识别)。
这样操作后,你既保持了脚本的环境无关性,又能正常使用console的常用功能了。如果想要更贴合官方标准的console类型,也可以参考TypeScript内置的console类型定义,只提取你需要的部分就行,不用全部照搬。
备注:内容来源于stack exchange,提问作者Dancrumb
相关产品推荐
相关产品推荐

