React-配合TS-创建新项目

1,228 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情


大家好,我是大帅子,今天我们来介绍一下我们该在react中使用ts呢,下面我们直接开始吧


创建项目命令

npx create-react-app 项目名 --template typescript

在命令行中,添加 --template typescript 表示创建支持 TS 的项目

项目目录的变化

  1. 多了一个文件:tsconfig.json。在项目根目录下可以看到它,它就是TS 的配置文件

  2. 后缀名有变化。在 src 目录中,文件的后缀有变化,由原来的 .js 变为 .ts.tsx

    • .ts ts 文件的后缀名
    • .tsx 是在 TS 中使用 React 组件时,需要使用该后缀。只要文件中使用了jsx模板,后缀名必须叫tsx
  3. 在 src 目录中,多了 react-app-env.d.ts 文件

三个文件后缀名

没有使用ts前:

.js

.jsx

// ts
.ts: 不能包含模板-jsx
​
.tsx:包含模板的代码,名字不能取.ts
​
// .ts中可以有执行代码 + 类型声明
.d.ts .d.ts中只能出现类型声明

.d.ts 类型声明文件,用来指定类型文件类型

tsconfig配置文件

  • tsconfig.json是typescript项目的配置文件,用于配置typescript
  • tsconfig.json配置文件可以通过 tsc --init 生成
  • 说明:所有的配置项都可以通过鼠标移入的方式,来查看配置项的解释说明。
  • tsconfig 文档链接
{
  // 编译选项
  "compilerOptions": {
    // 生成代码的语言版本:将我们写的 TS 代码编译成哪个版本的 JS 代码
    // 命令行: tsc --target es5 11-测试TS配置文件.ts
    "target": "es5",
    // ts内置的库
    // 如果删除了dom库,则无法使用document.getElementById
    "lib": ["dom", "dom.iterable", "esnext"],
    // 允许 ts 编译器编译 js 文件
    // 允许 import js文件
    "allowJs": true,
    // 跳过类型声明文件的类型检查
    "skipLibCheck": true,
    // es 模块 互操作,屏蔽 ESModule 和 CommonJS 之间的差异
    "esModuleInterop": true,
    // 即使模块没有显式指定 default 导出,也允许通过 import x from 'y' 
    "allowSyntheticDefaultImports": true,
    // 开启严格模式
    "strict": true,
    // 对文件名称强制区分大小写  Demo.ts  
    "forceConsistentCasingInFileNames": true,
    // 为 switch 语句启用错误报告
    // 如果switch中没有break 或者 return 就报错
    "noFallthroughCasesInSwitch": true,
    // 生成代码的模块化标准
    "module": "esnext",
    // 模块解析(查找)策略
    "moduleResolution": "node",
    // 允许导入扩展名为.json的模块
    "resolveJsonModule": true,
    // 是否将没有 import/export 的文件视为旧(全局而非模块化)脚本文件
    "isolatedModules": true,
    // 编译时不生成任何文件(只进行类型检查)
    "noEmit": true,
    // 指定将 JSX 编译成什么形式
    "jsx": "react-jsx"
  },
  // 指定允许 ts 处理的目录
  "include": ["src"]
}

类型声明-第三方库的类型声明文件

例如:axios

这种库无需做额外处理,可以直接使用代码提示功能

不带类型声明的库

例如:jquery, react....

这类库没有自带声明文件,需要我们单独去下载。

下载库声明文件

命令:npm i @types/库名

例如: npm i @types/jquery

参考

www.typescriptlang.org/dt/search?s…中搜索

小结

  1. 并不是所有的第三方库都有提供ts的声明文件
  2. 没有类型声明文件只是没有代码提示,并不会导致功能不可使用
  3. 没有自带类型声明文件的库,我们要自己下载

好了,这边已经给大家介绍到这里,以上是我自己的理解,讲的不好, 欢迎留言我这边一定会第一时间给大家解答,喜欢的可以点赞收藏,
🐣---->🦅        还需努力!大家一起进步!!!