react项目添加typescript类型定义文件 .d.ts
最近用react + antd mobile + typescript开发项目,其中使用了rc-form这个包,可惜没有typescript版本,导致找不到类型定义。
一起来重温一下这个经典的错误。
D:/Code/test/src/pages/me/register/RegisterTest.tsx
TypeScript error in D:/Code/test/src/pages/me/register/RegisterTest.tsx(5,28):
File 'D:/Code/test/src/rc-form.d.ts' is not a module. TS2306 3 | import BrowserHistory from '../../../router/BrowserHistory';
4 | import { AppUrls } from '../../../http/AppUrls';
> 5 | import { createForm } from "rc-form";
| ^
6 | import MyToast from '../../../componets/MyToast';
7 |
8 | export function RegisterTest(props: any) {
解决办法:
在网上查了很久,那些修改typeRoots的方法根本不好使,太坑人了。下面的方法绝对好用!
1. 修改项目根目录下的tsconfig.json文件,添加baseUrl选项,由于项目是用create-react-app创建的,这个值只能是src或者node_modules,推荐用src。

2. 编写类型定义文件rc-form.d.ts,内容如下:
declare module 'rc-form' {
export const createForm: Function;
}
3. 将rc-form.d.ts放入项目的src目录下。
4. 在需要使用rc-form模块的文件里直接导入即可。
import { createForm } from "rc-form";
===
最新方法:
tsconfig这样配置,注意typeRoots要放到compilerOptions结点下面。
{
"compilerOptions": {
"target": "es6",
"lib": [
"dom",
"dom.iterable",
"esnext",
"es2015"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react",
"baseUrl": "src",
"typeRoots": [
"src/custom_types",
"node_modules/@types"
]
},
"include": [
"src"
]
}
2. src目录下新建一个文件夹custom_types,放入类型定义文件,如下。

===
react项目添加typescript类型定义文件 .d.ts的更多相关文章
- JavaScript 和 TypeScript 交叉口 —— 类型定义文件(*.d.ts)
在 <从 JavaScript 到 TypeScript 系列> 文章我们已经学习了 TypeScript 相关的知识. TypeScript 的核心在于静态类型,我们在编写 TS 的时候 ...
- TypeScript 学习四 面向对象的特性,泛型,接口,模块,类型定义文件*.d.ts
1,面向对象的特性一:类,继承,见上一篇博客: 2,面向对象的特性二: 泛型(generic):参数化的类型,一般用来限制集合的内容:指定只能放某个类型的元素 如下图中的尖括号中的Person,就代表 ...
- TypeScript 类型定义文件(*.d.ts)自动生成工具
在开发ts时,有时会遇到没有d.ts文件的库,同时在老项目迁移到ts项目时也会遇到一些文件需要自己编写声明文件,但是在需要的声明文件比较多的情况,就需要自动生产声明文件.用过几个库.今天简单记录一下. ...
- TypeScript类型定义文件(*.d.ts)生成工具
在开发ts时,有时会遇到没有d.ts文件的库,同时在老项目迁移到ts项目时也会遇到一些文件需要自己编写声明文件,但是在需要的声明文件比较多的情况,就需要自动生产声明文件.用过几个库.今天简单记录一下. ...
- CesiumJS新增官方TypeScript类型定义
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 在当前的1.70版本中,CesiumJS现在附带了正式的Type ...
- 转载 《TypeScript 类型定义 DefinitelyTyped》
快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...
- 在react项目添加看板娘(react-live2d)
有留意到看板娘这么个东西,简直就是我们程序员+动漫迷的挚爱.但是回观网上,大多只是在老旧的html的静态引入.vue甚至也有几个不怎么维护的,还是老旧的不行的SDK2.X的版本.这这这这!我们的rea ...
- pycharm项目添加.gitignore忽略.idea文件夹
本地项目结构: .gitignore文件中添加: at_alsv_pro/.idea/SearchImage.iml at_alsv_pro/.idea/misc.xml at_alsv_pro/.i ...
- react项目中如何出现config文件夹
答案:运行 npm run eject 即可出现config文件夹 原因: 在package.json中:只有三个依赖,分别是react,react-dom,react-scripts,依赖为什么 ...
- 初始化一个React项目(TypeScript环境)
React将由三部分组成,其中,Redux是应用状态管理服务,React-Router用于路由映射,React View用于显示界面. 我们使用Facebook推荐的create-react-app来 ...
随机推荐
- Git安装与Git GUI的使用
一.下载安装包 官网:https://git-scm.com/downloads(下载慢) 或 https://pc.qq.com/search.html#!keyword=git,本人使用的是Git ...
- Linux下配置系统ipv6环境
一:检查Linux是否已经开启ipv6 1.使用 ifconfig 查看自己的IP地址是否含有IPv6地址. inet6 addr: fe80::213:d4f*:****:****/64 Scope ...
- 视觉SLAM第四讲李群与李代数习题
视觉SLAM第四讲李群与李代数习题 一.验证\(SO(3).SE(3).SIM(3)\)关于乘法成群 首先引入一下群的定义. 群 (Group) 是一种集合加上一种运算的代数结构.我们把集合记作 \( ...
- 深入掌握Map的这8个操作方法,让代码更简洁优雅
Map 是我们经常使用的数据结构接口,它的子类 HashMap.ConcurrentHashMap 也是我们使用比较频繁的集合. 了解了 Map 接口中的方法,也就相当于知道了其子类中的可用方法,管它 ...
- 【软件】基于JSP和Bootstrap的潇湘博客平台
潇湘博客平台 XiaoXiangBlog 说明 Eclipse 项目 - Version: 2020-06 (4.16.0). JDK8. 潇湘博客(XiaoXiangBlog) 一个简单的Java ...
- Netty源码—10.Netty工具之时间轮
大纲 1.什么是时间轮 2.HashedWheelTimer是什么 3.HashedWheelTimer的使用 4.HashedWheelTimer的运行流程 5.HashedWheelTimer的核 ...
- 🔥Gitlab 删除仓库文件夹
1.进入文件夹 -> 右键 -> Git Bash Here -> 打开命令窗口 2.拉取代码到本地 (本地无项目情况) git clone git地址 3.拉取最新代码(本地已有项 ...
- 保存计算过程的计算器——java实现
一.设计模型 按照MVC-Model View Control(模型,视图,控制器)的设计思想展开程序的设计和代码的编写.数据模型部分相当于MVC中的Model角色,视图设计部分给出的界面部分相当于M ...
- Python爬取任意城市肯德基门店信息(json数据反序列化、提取数据、写入CSV)
本案关键内容点:json数据反序列化.提取数据.写入CSV 创建csv,写入表头数据,脚本同目录下会创建名称为book的csv文件,且第一行插入表头内容 import csv f = open('bo ...
- fiddler断点应用
一.作用 1.模拟网络中断 2.断点时篡改数据 3.测试时做一些极端测试 二.断点步骤 1.全局断点 1)全局断点的两种方式 点击状态栏空白框,点击一下请求前断点,两下请求后断点,三下取消断点 Rul ...