15、TS的声明文件

有一些写好的库, 但是并不是使用 TS 编写的为了可以获取 TS 的类型检查, 可以为该库编写声明文件 Jquery 就是这样做的

什么是声明文件

.d.ts 结尾的文件就是声明文件

声明文件有什么作用

为 JS 代码提供类型声明

声明文件的位置

  • 放置到 tsconfig.json 文件中的 include 配置目录中

  • 放置到 ```node_modules/@types 文件夹中

  • 手动配置 tsconfig.json 中的 compilerOptions.typeRoots 选项, 配置申明文件的目录(如果写了该配置, 上面两个的配置就失效了)

  • 于 js 代码所在目录相同, 并且文件名也相同的文件

如何编写声明文件

自动生成

项目是使用 ts 编写的, 在发布(编译)之后是 js 文件

如果发布的 js 文件需要被其他开发者使用, 就可以使用声明文件来描述发布 js 文件中的类型, 就可以在 tsconfig.json 文件中配置 compilerOptions.declaration : true 配置好之后再次编译ts文件就会自动生成声明文件

手动编写

手动编写主要用于对已经使用 js 开发好的库(Jquery) 不需要在使用 ts 在开发一次, 如要在 ts 中使用并且获得类型检查就可以手动编写声明文件

手动书写一下声明文件

  1. 创建声明文件

  2. 编写内容, 这里以 nodejs 的 console 举例

全局声明, 一些全局的对象比如 console

declare const console: {
    log(message?: any): void
} 

用于声明全局对象, 声明文件只能书写类型声明不能进行类型赋值

使用命名空间

declare namespace console {
    function log(message?: any): void
} 

namespace 表示只能通过 命名空间名.成员 进行使用, 在早期没有 ES 模块化是发挥很大的作用。

模块声明

declare module "lodash" {
    export function chunk(arr1: T[], size: number): T[][]
} 

///

///用于引入其他的声明文件

///  

发布

当前工程使用 TS 开发

使用 tsc 打包然后在按照 发布 npm 的方式 发布出去

为其它库编写的声明文件

  1. 进入到 github 的开源项目:github.com/DefinitelyT…

  2. fork到自己的开源项目中

  3. 将fork的库克隆到本地

  4. 在本地新建分支开发

  5. 然后在项目文件中的 types 文件夹中新建文件夹

  6. push分支到你的开源库

  7. 再到官方的开源库中提交 pull request

  8. 等待官方管理员审核,审核通过就会将你的代码合并到主分支中, 之后你就可以通过 npm install @types/你发布的库名 进行下载

总结

声明文件主要用于对 现有的 js 进行类型声明, 已达到在 ts 中使用时有类型声明。

你可能感兴趣的:(typescript,javascript,前端)