声明文件 declare
当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能。
declare var 声明全局变量
declare function 声明全局方法
declare class 声明全局类
declare enum 声明全局枚举类型
declare namespace 声明(含有子属性的)全局对象
interface 和 type 声明全局类型
/// <reference /> 三斜线指令
例如我们有一个express 和 axios
发现express 报错了
让我们去下载他的声明文件
npm i --save-dev @types/express
那为什么axios 没有报错
我们可以去node_modules 下面去找axios 的package json
发现axios已经指定了声明文件 所以没有报错可以直接用
通过语法declare 暴露我们声明的axios 对象
declare const axios: AxiosStatic;
如果有一些第三方包确实没有声明文件我们可以自己去定义
名称.d.ts 创建一个文件去声明
案例手写声明文件
index.ts
import axiso from 'axios'
import express from 'express'
const app = express();
const router = express.Router()
app.use('/api', router)
router.get('/api', (req, res) => {
res.json({
code: 200
})
})
app.listen(9001, () => {
console.log('9001')
})
express.d.ts
declare module 'express' {
interface App {
use(path: string, router: any): void
listen(port: number, callback?: () => 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 xxx(params: type):void{
}
declare class Vue {
}
declare enum C {
a = 1, b = 2, c = 3, d = 4, e
}