ts 浅了解——声明文件.d.ts
.d.ts文件 -- 声明文件
用途:编写类型声明
注意:同目录下.d.ts和.ts文件不要同名,否则模块系统无法只根据文件名加载模块
声明文件可以被导入,使用其中暴露的类型定义
声明文件可定义类型或者声明值:
-
*** 类型可以直接定义 ***
-
*** 值的声明需要借助 declare 关键字 ***,如果不使用 declare 关键字,值的声明和初始化是一起的(声明文件只起到声明的作用)
let a: number; // 编译为 var a;
声明一个值需要用 declare 否则会被认为存在初始化的内容,从而报错
let a: number = 1; // error TS1039: Initializers are not allowed in ambient contexts. declare let foo: number
注意:declare 多个同名的变量是会冲突的
declare 也允许出现在.ts文件中,但一般不这么做:
.ts文件中直接使用 let / const / function / class 就可以声明并初始化一个变量。并且.ts文件编译后也会去掉 declare 的语句,所以不需要 declare语句。
declare 可声明一个值,也可用来声明一个模块和全局的插件(这是在特定场景用来给第三方包做声明)
declare module用来给一个第三方模进行类型声明:
比如有一个第三方包foo,没有类型声明。我们可以在我们项目中实现一个声明文件来让TypeScript可以识别模块类型:foo.d.ts
// foo.d.ts declare module "foo" { export let size: number } // 使用 import foo from "foo" console.log(foo.size)
如果声明文件不导出(export)默认是全局可以访问的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY