Use in TypeScript
Let's create a TypeScript project by using create-react-app, then import antd step by step.
We build
antdbased on latest stable version of TypeScript (>=4.0.0), please make sure your project dependency matches it.
Install and Initialization#
Ensure your system has installed latest version of yarn or npm.
Create a new cra-template-typescript project named antd-demo-ts using yarn.
$ yarn create react-app antd-demo-ts --template typescriptIf you are using npm (we will use yarn in the following instructions, it's ok to replace yarn with npm)
$ npx create-react-app antd-demo-ts --template typescriptThen we go inside antd-demo-ts and start it.
$ cd antd-demo-ts
$ yarn startOpen browser at http://localhost:3000/, it renders a header saying "Welcome to React" on the page.
Import antd#
$ yarn add antdModify src/App.tsx, import Button component from antd.
import React, { FC } from 'react';
import { Button } from 'antd';
import './App.css';
const App: FC = () => (
<div className="App">
<Button type="primary">Button</Button>
</div>
);
export default App;Add antd/dist/antd.css at the top of src/App.css.
@import '~antd/dist/antd.css';OK, reboot with yarn start, you should now see a blue primary button displayed on the page. Next you can choose any components of antd to develop your application. Visit other workflows of create-react-app at it's User Guide.
antd is written in TypeScript with complete definitions, try out and enjoy the property suggestion and typing check.

Don't install
@types/antd.
Advanced Guides#
In the real world, we usually have to modify default webpack config for custom needs such as themes. We can achieve that by using craco which is one of create-react-app's custom config solutions.
Install craco and modify the scripts field in package.json.
$ yarn add @craco/craco/* package.json */
"scripts": {
- "start": "react-scripts start",
- "build": "react-scripts build",
- "test": "react-scripts test",
+ "start": "craco start",
+ "build": "craco build",
+ "test": "craco test",
}Then create a craco.config.js at root directory of your project for further overriding.
/* craco.config.js */
module.exports = {
// ...
};Customize Theme#
According to the Customize Theme documentation, we need to modify less variables via loader like less-loader. We can use craco-less to achieve that,
First we should modify src/App.css to src/App.less, then import less file instead.
/* src/App.ts */
- import './App.css';
+ import './App.less';/* src/App.less */
- @import '~antd/dist/antd.css';
+ @import '~antd/dist/antd.less';Then install craco-less and modify craco.config.js like below.
$ yarn add craco-lessconst CracoLessPlugin = require('craco-less');
module.exports = {
plugins: [
{
plugin: CracoLessPlugin,
options: {
lessLoaderOptions: {
lessOptions: {
modifyVars: { '@primary-color': '#1DA57A' },
javascriptEnabled: true,
},
},
},
},
],
};By adding modifyVars option of less-loader here, we should see a green button rendered on the page after rebooting the server now.
We provide built-in dark theme and compact theme in antd, you can reference to Use dark or compact theme.
You could also try react-app-rewired and customize-cra to customize create-react-app webpack config like craco did.
Alternative ways#
Follow manual in Adding TypeScript to setup TypeScript development environment if you already create a project by Use in create-react-app.