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)默认是全局可以访问的

posted @   等等啦  阅读(4579)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示