最近比较邪门,多次遇到不同情况下的同一个问题,那就是typescript中的namespace。不过追根究底,还是我对typescript不够了解导致的,现在记录下来,希望后面遇到同类问题的时候能够作为参考。
第一次是在vite+ts+vue3中遇到的。我在namespace中定义了enum,结果浏览器上报错,通过在segmentfault上了解到enum有运行时的部分,不能直接定义在.d.ts文件中。在这里感谢ForkKILLET(https://segmentfault.com/u/forkkillet)。
第二次是在koa2+ts中遇到的。刚开始我把tsconfig.json的配置文件检查了半天,始终没发现问题,后面我想了一个笨办法,把所有相关的文件挨个删除看看究竟是哪里影响的,最后发现了一个关键地方:ts-node。我在其他项目中都是使用tsc运行的ts文件,但是这个项目我用的ts-node,百度之后发现ts-node 忽略了tsconfig.json 的include-选项,需要在tsconfig.json文件中添加配置:
image.png
具体的说明参考:https://github.com/TypeStrong/ts-node#help-my-types-are-missing
然后就可以啦!