Skip to content

声明文件d.ts

要学习手写声明文件原因在代码的前五行:

typescript
// ctrl+点击axios会发现进入的是axios的声明文件
import axios from 'axios'
// express这里报错原因为缺少声明文件,ctrl+点击进入的为express的源码
// 这也是ts现如今的缺点,想使用第三方库,但是缺少声明文件,社区也缺少他人编写的声明文件
// 这时候就需要我们自行编写声明文件
import express from 'express'

const app=express()

const router=express.Router()

app.use('/api',router)

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

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


// 在express中扩充的内容
a=1

xxxx('number')

Vue

C.a

A.a

自定义的声明文件,注意命名为express.d.ts,代码如下:

typescript
// 为express的声明文件声明一个模块,为'express'
declare module 'express'{
    
    interface Router{
        use(path:string,router:Router)
        get(path:string,cb?:(req:any,res:any)=>void):void
    }

    interface App{
        use(path:string,router:any):void
        listen(port:number,cb?:()=>void)
    }

    interface Express{
        ():App
        Router():Router
    }
    const express:Express

    export default express;
}

// 扩充一个变量
declare var a:number

// 扩充一个函数
declare function xxxx(params:type){

}

// 扩充一个类
declare class Vue{

}

// 扩充枚举类型
declare enum C{
    a=1
}

// 声明(含有子属性的)全局对象
declare namespace A{
    export const a=1
}

// interface 和 type 声明全局类型

/// <reference /> 三斜线指令

Released under the MIT License.