首页 新闻 会员 周边 捐助

.d.ts 里面 declare let、function 说的是声明类型,那到底怎么用啊?

0
悬赏园豆:20 [已解决问题] 解决于 2023-04-07 13:31
declare let hello: string;

declare function greet(greeting: string): void;

假如 .d.ts 里面有这两个,说的是编译之前可以在 ts 项目里面随便用,不报错。但是运行之后,不能作为值直接使用,那这个到底发挥了什么作用?

请直接举个例子

Himmelbleu的主页 Himmelbleu | 菜鸟二级 | 园豆:211
提问于:2023-03-30 14:48
< >
分享
最佳答案
0

“说的是编译之前可以在 ts 项目里面随便用,不报错。但是运行之后,不能作为值直接使用”
该描述过于模糊。

下面列出场景:
当编译器(你的开发工具)无法识别出一些第三方包的类型信息时,可以通过声明文件来指定类型

比如,在Element Plus的项目中使用国际化,官网的做法如下:
// main.ts
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
app.use(ElementPlus, {
locale: zhCn
})
上面的代码能跑起来,且生效,但实际在使用了TS的项目里,from 'element-plus/dist/locale/zh-cn.mjs'这个地方会有波浪线提示:
无法找到模块“element-plus/dist/locale/zh-cn.mjs”的声明文件
...隐式拥有 "any" 类型
解决这个波浪线提示的做法就是在声明文件里补上:
declare module 'element-plus/dist/locale/zh-cn.mjs'

无论是JavaScript库、模块、类、函数,还是别的,均可以通过这种方式解决类型问题,这便是.d.ts声明文件的作用。

收获园豆:20
顾星河 | 大侠五级 |园豆:7330 | 2023-03-30 16:20

说的非常不错!

Himmelbleu | 园豆:211 (菜鸟二级) | 2023-04-07 13:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册