
src/react-app-env.d.ts 是 TypeScript 的全局类型声明文件,在这个项目中承担以下几个作用:
- 引入 React 脚手架内置类型
clike
/// <reference types="node" />
/// <reference types="react" />
/// <reference types="react-dom" />`在这里插入代码片`
三条三斜线指令,让 TypeScript 自动加载 Node.js、React、ReactDOM 的类型定义,无需在每个文件里手动 import。
- 扩展 process.env 的类型
dart
declare namespace NodeJS {
interface ProcessEnv { ... }
}
定义了项目自定义的环境变量(如 REACT_APP_Version_Code),使访问 process.env.REACT_APP_Version_Code 时有类型提示和检查。
- 声明静态资源模块类型
dart
declare module '*.png' { ... }
declare module '*.svg' { ... }
告诉 TypeScript:import logo from './logo.png' 这类导入是合法的,并且知道导出的是 string 类型。
- 声明样式文件模块类型
dart
declare module '*.less' {} // 普通 less,副作用导入
declare module '*.css' {} // 普通 css,副作用导入
declare module '*.module.less' { ... } // CSS Modules,有具名导出
declare module '*.module.css' { ... } // CSS Modules,有具名导出
区别:*.module.less 有 export default classes 是因为 CSS Modules 会导出一个类名映射对象;而普通 *.less 只是副作用导入(注入样式),不需要导出值,所以声明为空 {}。
- 扩展 Window 全局对象
dart
interface Window {
hubConnection: HubConnection;
}
让 window.hubConnection 访问时不报 TS 错误,对应 App.tsx 里直接挂载 SignalR 连接对象到 window 上的做法。