声明文件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 /> 三斜线指令