create-react-app typescript global.d.ts 文件不起作用

reactjstypescript

1个回答

写回答

BigJoJo

2025-07-09 18:41

+ 关注

typescript
typescript

根据 create-react-app typescript global.d.ts 文件不起作用,

解决 create-react-app typescript global.d.ts 文件不起作用的问题

在使用 create-react-app 创建 typescript 项目时,我们经常会遇到 global.d.ts 文件不起作用的问题。这个问题可能导致我们无法在项目中引入全局的类型定义,从而导致一些类型错误或编译错误。本文将介绍这个问题的原因,并提供解决方案。

问题描述

当我们在 create-react-app 创建的 typescript 项目中需要引入全局的类型定义时,通常会在 src 目录下创建一个 global.d.ts 文件,并在其中定义全局的类型。例如,我们可能会在 global.d.ts 文件中定义一个全局的接口:

typescript

// global.d.ts

interface Window {

myGlobalVariable: string;

}

然后,在项目的其他文件中,我们可以直接使用这个接口:

typescript

// App.tsx

const myVariable: string = window.myGlobalVariable;

然而,有时候我们发现 global.d.ts 文件中定义的类型并没有起作用,编译时会报错提示找不到相应的全局变量或类型。这可能是因为 create-react-app 默认的 typescript 配置不会自动加载 global.d.ts 文件。

解决方案

要解决这个问题,我们需要手动配置 typescript,使其能够加载 global.d.ts 文件。下面是一种解决方案:

首先,创建一个 typings 目录,并在其中创建一个 index.d.ts 文件:

typescript

// typings/index.d.ts

/// <reference path="./global.d.ts" />

然后,在项目的根目录下创建一个 tsconfig.JSon 文件,并在其中配置 typescript

JSon

// tsconfig.JSon

{

"compilerOptions": {

"baseUrl": "./",

"paths": {

"*": ["./typings/*"]

}

}

}

接下来,我们需要将 create-react-app 的默认 typescript 配置替换为我们自己的配置。打开 package.JSon 文件,找到 "scripts" 字段下的 "start" 和 "build" 命令,并修改为如下内容:

JSon

// package.JSon

{

"scripts": {

"start": "react-scripts-ts start --preserveWatchOutput",

"build": "react-scripts-ts build"

}

}

最后,在项目根目录下运行以下命令重启项目:

npm start

现在,global.d.ts 文件中定义的全局类型就会起作用了。我们可以在项目的其他文件中正常使用全局的类型定义。

在使用 create-react-app 创建的 typescript 项目中,global.d.ts 文件默认情况下不会被 typescript 加载,导致全局类型定义无效。为了解决这个问题,我们可以手动配置 typescript,使其能够加载 global.d.ts 文件。通过创建 typings 目录、配置 tsconfig.JSon 文件,并修改 package.JSon 文件中的 "start" 和 "build" 命令,我们可以让全局类型定义在项目中起作用。

希望本文对解决 create-react-app typescript global.d.ts 文件不起作用的问题有所帮助。如果你遇到了这个问题,可以尝试按照本文所述的方法进行解决。祝你的 typescript 项目开发顺利!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号