ant-design/docs/react/use-in-typescript.en-US.md

5.0 KiB

order title
5 Use in TypeScript

Let's create a TypeScript project by using create-react-app, then import antd step by step.

We build antd based on latest stable version of TypeScript (>=3.8.4), 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 typescript

# or

npx create-react-app my-app --template typescript

If 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 --typescript

Then we go inside antd-demo-ts and start it.

$ cd antd-demo-ts
$ yarn start

Open browser at http://localhost:3000/, it renders a header saying "Welcome to React" on the page.

Import antd

$ yarn add antd

Modify 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-less
const 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.