Skip to content

声明文件 d.ts

声明文件 declare

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

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

例如我们有一个 express 和 axios

声明文件

发现 express 报错了

下载他的声明文件

npm install @types/node -D

为什么 axios 没有报错

去 node_modules 下面去找 axios 的 package json

axios

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

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

declare const axios: AxiosStatic;

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

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

手写声明文件

index.ts

ts
import express from 'express';

const app = express();

const router = express.Router();

app.use('/api', router);

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

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

express.d.ts

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(port: number, cb?: () => void): void;
  }
  interface Express {
    (): App;
    Router(): Router;
  }
  const express: Express;
  export default express;
}

Keep Reading, Keep Writing, Keep Coding