React应用程序配置TypeScript

开发 后端
最近在学习TypeScript的一些知识用到了 react,记录一下 react 创建应用项目和支持 TypeScript。

[[346311]]

 前言
最近在学习TypeScript的一些知识用到了 react,记录一下 react 创建应用项目和支持 TypeScript。

React 是一个用于构建用户界面 UI 的 JavaScript 库,它的创建默认是不支持 TypeScript 的,本文使用的是 React16.13.1

在使用 react 的库的时候我们需要安装下面的几个组件:

  1. node(npm,npx) 
  2. create-react-app 
  3. react-script-ts 
  4. typescript 

阅读本文将学到:

  • 快速创建 React 应用
  • tsconfig 的基本配置
  • 使用 React 中的 tsx 组件
  • tsx 中图片编译失败

创建项目
这里默认我们拥有 node 环境,使用 npx 快速安装 React 的应用程序

  1. npx create-react-app react-demo --script-version=react-script-ts 

在网络条件不错的情况下,速度还是可观的吧

  1. npx: 97 安装成功,用时 22.955 秒 
  2.  
  3. We suggest that you begin by typing: 
  4.  
  5.   cd react-demo 
  6.   yarn start 
  7.  
  8. Happy hacking! 

创建好程序之后,我们记录一下此时的目录:

tsconfig 的基本配置
首先需要安装TypeScript:

  1. npm i typescript -D 
  2. tsc --init 

生成我们需要的tsconfig.json文件之后,我们根据自己的需求去修改即可:

  1.   "compilerOptions": { 
  2.     "target""ES2016"
  3.     "module""ESNext"
  4.     "lib": [ 
  5.       "ES6"
  6.       "DOM" 
  7.     ], 
  8.     "allowJs"true
  9.     "jsx""react"
  10.     "sourceMap"true
  11.     "outDir""build/dist"
  12.     "rootDir""src"
  13.     "importHelpers"true
  14.     "strict"true
  15.     "noImplicitAny"true
  16.     "strictNullChecks"true
  17.     "noImplicitThis"true
  18.     "noUnusedLocals"true
  19.     "noImplicitReturns"true
  20.     "moduleResolution""node"
  21.     "baseUrl""."
  22.     "esModuleInterop"true
  23.     "skipLibCheck"true
  24.     "forceConsistentCasingInFileNames"true
  25.     "suppressImplicitAnyIndexErrors"true
  26.     "allowSyntheticDefaultImports"true
  27.     "resolveJsonModule"true
  28.     "isolatedModules"true
  29.     "noEmit"true 
  30.   }, 
  31.   "exclude": [ 
  32.     "node_modules"
  33.     "build"
  34.     "scripts"
  35.     "acceptance-tests"
  36.     "webpack"
  37.     "jest"
  38.     "src/setupTests.ts" 
  39.   ], 
  40.   "include": [ 
  41.     "src" 
  42.   ] 

使用 React 中的 tsx 组件
tsx 是相当于 jsx 的 TypeScript 版本,在目录中我们将.js 后缀结尾的改成.tsx 结尾

  1. import React from 'react'
  2. import ReactDOM from 'react-dom'
  3. import App from './App'
  4. import * as serviceWorker from './serviceWorker'
  5.  
  6. ReactDOM.render( 
  7.   <React.StrictMode>  //严格模式 
  8.     <App /> 
  9.   </React.StrictMode>, 
  10.   document.getElementById('root'as HTMLElement 
  11. ); 
  12.  
  13. serviceWorker.unregister(); 

tsx 中图片编译失败
在修改完文件名字后发现图片编译失败

在使用 Webpack,使用静态资源,如图片和字体,工作方式类似于 CSS。可以直接在 TypeScript 模块中导入文件。这告诉 Webpack 将该文件包含在 bundle 中。与 CSS 导入不同,导入一个文件会给你一个字符串值。这个值是您可以在代码中引用的最终路径,例如,作为图像的 src 属性或指向 PDF 的链接的 href。

为了减少对服务器的请求数量,导入少于 10,000 字节的映像将返回一个数据 URI 而不是路径。这适用于以下文件扩展名: bmp、 gif、 jpg、 jpeg 和 png。SVG 文件被排除。

在开始之前,必须将每种类型定义为有效的模块格式。否则,TypeScript 编译报错

要在 TypeScript 中导入这些文件,请在项目中创建一个新的类型定义文件,并将其命名为 assets.d.ts。然后,为需要导入的每种类型的资产添加一行:

  1. declare module '*.svg' 
  2. declare module '*.png' 
  3. declare module '*.jpg' 
  4. declare module '*.jpeg' 
  5. declare module '*.gif' 
  6. declare module '*.bmp' 
  7. declare module '*.tiff' 

配置之后需要npm start重新启动项目才能生效。

 

责任编辑:姜华 来源: 小丑的小屋
相关推荐

2021-09-26 08:30:31

Python应用程序代码

2009-07-29 17:01:13

2016-07-29 13:47:05

RethinkDBWeb

2021-07-14 17:39:46

ReactRails API前端组件

2009-09-14 09:17:43

.settings配置

2009-06-19 13:45:53

Java应用程序Jfreechart

2020-03-31 22:09:01

React应用程序

2012-06-07 09:15:14

ibmdw

2012-05-29 10:04:08

2022-03-14 08:54:04

NetlifyHTMLReact

2021-05-05 10:06:09

React应用程序微前端

2011-12-02 14:17:51

Java

2009-12-10 15:35:10

ASP.Net 2.0

2009-07-16 17:09:02

Swing应用程序

2012-02-15 13:26:56

IndexedDB

2011-07-21 10:47:37

iPhone Cocoa 委托

2013-11-19 15:35:01

2011-11-03 09:41:35

Android签名安全性

2021-01-30 10:58:29

React应用程序开发

2019-11-25 15:44:13

TS数据JavaScrip
点赞
收藏

51CTO技术栈公众号