TypeScript学习笔记之声明文件d.ts

声明文件 declare

当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能。

declare var 声明全局变量
declare function 声明全局方法
declare class 声明全局类
declare enum 声明全局枚举类型
declare namespace 声明(含有子属性的)全局对象
interface 和 type 声明全局类型
/// <reference /> 三斜线指令

例如我们有一个express 和 axios

先安装axios和express

发现express 报错了

让我们去下载他的声明文件

npm install @types/node -D

那为什么axios 没有报错

我们可以去node_modules 下面去找axios 的package json

发现axios已经指定了声明文件,所以没有报错可以直接用

通过语法declare,暴露我们声明的axios 对象

declare  const axios: AxiosStatic;

如果有一些第三方包确实没有声明文件我们可以自己去定义

名称.d.ts,创建一个文件去声明

index.ts

import express from 'express'

const app = express()
const router = express.Router()

app.use('/api', router)

router.get('/list', (req: any, res: any) => {
  res.json({
    code: 200
  })
})

app.listen(9001, () => {
  console.log(9001)
})

express.d.ts

declare module 'express' {
  interface Router {
    get(path: string, cb: (req: any, res: any) => void): void
  }
  interface APP {
    use(path: string, router: any): void,
    listen(path: number, cb?: () => void): void
  }

  interface Express {
    (): APP,
    Router(): Router
  }

  const express: Express;
  export default express
}

额外的扩充

declare module 'express'{
  interface App{
    use(path:string,router:any):void,
    listen(path:number,cb:()=>void):void
  }

  interface Router{
    get(path:string,cb:(req:any,res:any)=>void):void
  }

  interface Express{
    ():App,
    Router():Router
  }

  const express:Express,
  export default express
}
//扩充变量
declare let a:number
//扩充函数
declare function f(params:type) {
  console.log(params)
}
//扩充枚举
declare enum C{
  a
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值