typescript搭配react使用笔记1

1.create-react-app作为脚手架

如果利用create-react-app进行开发的话,那么使用create-react-app appName –typescript那么便可以初始化一个typescript+react的开发环境。

一般的,推荐在搭配tslint来规范代码格式,可以使用如下命令进行安装:

1
yarn add tslint tslint-react tslint-config-prettier --dev

在安装好依赖之后,接下来进行配置tslint,在项目的根目录下面新建tslint.json文件。如果是vscode的话,那么安装下tslint扩展。tslint.json文件如下所示(视项目实际情况进行配置即可):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"extends": [
"tslint:recommended",
"tslint-react",
"tslint-config-prettier"
],
"rules": {
"no-console": true
},
"linterOptions": {
"exclude": [
"node_modules/**/*.js",
"config/**/*.js"
]
}
}

配置完后,可以测试一下tslint配置是否生效,在某个非exclude的js文件中console下,如果有报错标注则说明tslint配置生效了。

2.手动配置

接下来手动配置一个项目使其支持typescript以及react:

1.新建一个项目文件夹,使用npm init进行初始化,在项目根目录中新建一个src文件夹和dist文件夹。

2.添加基础依赖,yarn add typescript –dev,在项目根目录中增加tsconfig.json配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"compilerOptions": {
"target": "es5",
"module": "es6",
"moduleResolution": "node",
"lib": ["es6", "dom"],
"sourceMap": true,
"jsx": "react",
"strict": true,
"noImplicitReturns": true,
"rootDir": "src",
"outDir": "dist",
},
"include": ["**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}

3.添加tslint作为代码格式检查工具: yarn add tslint –dev,在项目根目录中添加一个tslint.json配置文件,示例如下所示:

1
2
3
4
5
6
7
8
9
{
"extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
"rules": {
"ordered-imports": false
},
"linterOptions": {
"exclude": ["node_modules/**/*.ts"]
}
}

由于我们的tslint配置文件还用上了第三方依赖,所以安装它:

1
yarn add tslint-react tslint-config-prettier --dev

4.添加react依赖以及对应的types依赖文件:

1
2
yarn add react react-dom;
yarn add @types/react @types/react-dom --dev;

5.在项目根目录中的dist文件夹中添加index.html文件,内容如下所示:

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8" />
<title>手把手配置基础脚手架</title>
</head>
<body>
<div id="root"></div>
<script src="bundle.js"></script>
</body>
</html>

在项目根目录中的src文件夹创建一个index.tsx文件,如下所示:

1
2
3
4
5
6
7
8
import * as React from "react";
import * as ReactDOM from "react-dom"

const App: React.SFC = () => {
return <h1>learn</h1>
}

ReactDOM.render(<App />, document.getElementById("root") as HTMLElement);

6.使用webpack作为代码打包工具:首先安装依赖文件

1
2
3
yarn add webpack webpack-cli --dev
yarn add webpack-dev-server --dev # 在开发阶段可以作为server使用
yarn add ts-loader --dev # 针对typescript的webpack plugin

在项目根目录中配置webpack.config.js文件,实例如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const path = require('path');

module.exports = {
entry: "./src/index.tsx",
module: {
rules: [
{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/
}
]
},
resolve: {
extensions: [".tsx", ".ts", ".js"]
},
output: {
path: path.resolve(__dirname, "dist"),
filename: "bundle.js"
},
devServer: {
contentBase: path.join(__dirname, "dist"),
compress: true,
port: 9000
}
};

7.添加npm脚本,如下所示:

1
2
3
4
"scripts": {
"start": "webpack-dev-server --env development",
"build": "webpack --env production"
}

8.接下来使用npm run start即可以看到运行效果。