• TypeScript24:TS中的声明文件


    一、声明文件概述

    .d.ts 结尾的文件。

    声明文件作用: ts->js ,得不到类型声明。 为 JS 代码提供类型声明。

    声明文件书写的位置: 

    • 放置到 tsconfig.json 配置中包含的目录中;
    • 放置到 node_modules/@types 文件夹中;
    • 手动配置(手动配置后上两种配置失效),在 tsconfig.json 中配置例:"typeRoots":["./types"]
    • JS 代码所在目录相同,并且文件名也相同的文件。用 ts 代码书写的工程发布之后的
      格式。

    二、编写声明文件 

    1.自动生成

    工程是使用 ts 开发的,发布(编译)之后,是 js 文件,发布的是 js 文件。

    如果发布的文件,需要其他开发者使用,可以使用声明文件,来描述发布结果中的类型。

    配置 tsconfig.json 中的 declaration:true 即可。

    2.手动编写 

    • 对已有库,它是使用 js 书写而成,并且更改该库的代码为 ts 成本较高,可以手动编写声明文件;
    • 对一些第三方库,它们使用 js 书写而成,并且这些第三方库没有提供声明文件,可以手动编写声明文件。

    (1)全局声明:声明一些全局的对象、属性、变量

    namespace:表示命名空间,可以将其认为是一个对象,命名空间中的内容,必须通过 命名空间.成员名 访问。

    node_modules 中的 node 文件夹删除,此时就没有 node 全局对象,使用 console.log 会进行报错。

     写法一:

    1. interface Console {
    2. log(message?: any): void
    3. error(message?: any): void
    4. }
    5. declare var console: Console

     写法二:

    1. declare namespace console {
    2. function log(message?: any): void
    3. function error(message?: any): void
    4. }
    5. declare function setTimeout(hanler:()=>void,timeout:number):number

    (2)模块声明:

    安装 lodash 库。

    npm i lodash

    引入时报错: 可以通过 CommonJS 引入,但是会失去类型检查。

    解决方法:

    首先在 tscongif.ts 文件中配置 "typeRoots": ["./node_modules/@types","./src/types"] ,代表了从这两个目录中寻找声明文件。

     src/types/lodash.d.ts : 

    1. // 声明模块
    2. declare module 'lodash' {
    3. export function chunk(array: T[], size: number):T[][]
    4. }

     src/index.ts : 

    1. import _ from "lodash"
    2. const newarr = _.chunk([3, 4, 9, 8, 7], 2)
    3. console.log(newarr); // [ [ 3, 4 ], [ 9, 8 ], [ 7 ] ]

    3.三斜线指令(了解)

    在一个声明文件中,包含另一个声明文件。

    在一个能够被读到的声明文件中引入一些读不到的声明文件, /// 前只能是注释,能能有其他代码。 

    /// 
  • 相关阅读:
    【网络工程】6、防火墙介绍及配置实操
    C++ 二维差分 二维前缀和逆运算 差分矩阵
    SpringCloudAlibaba 综合项目实战工业级PaaS云平台第六课 微服务治理、paas和devops
    Spring事件ApplicationEvent源码浅读
    移动端(Android、iOS)内存泄漏检测方法
    MPP和hadoop
    独立咖啡店如何有效经营?看懂十三个生存逻辑就成功了
    MAX/MSP SDK学习05:A_GIMME方法
    (1)mybatisplus简介
    分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测
  • 原文地址:https://blog.csdn.net/m0_60189088/article/details/137105774