// index.d.ts文件是描述该插件如何使用的说明,如果插件缺失该文件import时候会报错
import Axios from 'axios' // 不会报错,通过ctrl+点击会进去该index.d.ts文件
// express缺失index.d.ts直接import会报错
// 方法1:安装 @types/express,可以解决该问题,但是不是所有插件都会有@types插件
// import Express from 'express'
// 方法2:自己写一个声明文件
import Express from 'express'
// 模拟express使用get写接口需要调用的方法
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');
})
// 对应.d.ts文件
p = 1
k('1')
Aue
L
// 使用declar module语法声明,则import express不会报错
declare module 'express' {
interface App {
// 对照express调用方法:app.use('./api/,router)
use(path:string,router:any):void
// 对照express调用方法:app.listen()
listen(port:number,cb?:()=>void):void
}
interface Express {
// 对照express调用方法:const app = Express()
():App
// 对照express调用方法:const router = app.Router()
Router():Router
}
interface Router {
// 对照express调用方法:
// router.get('/api',(req:any,res:any) => {
// res.json({
// code: 200
// })
// })
get:(path:string,cb:(request:any,result:any)=>void)=>void
}
const express:Express
// Express作为外部的第一入口
export default express
}
// declare后可以全局使用
declare var p:number
declare function k(params:string) {
}
declare class Aue {
}
declare enum L {
}