- vừa được xem lúc

Tìm hiểu căn bản typescript với reactjs

0 0 17

Người đăng: Đoàn Văn Danh

Theo Viblo Asia

Hôm nay,mình lại một bài viết về reactjs, chủ đề hôm nay là với typescript. Những điều hay ho và những thuận lợi trong khi làm việc với nó.

I> Bắt đầu:

1> Đôi nét về typescript:

Nó do Microsoft phát triển , nó là 1 mã nguồn mở cho lập trình viên phát triển. Là hàng của ông lớn, nên chắc chắn nó phải xịn và được nhiều lập trình viên đón nhận.

Những điểm mạnh từ nó:

  • Kế thừa các cú pháp từ javascript nên rất dễ sử dụng hơn các mã nguồn tương tự
  • Ngoài kế thừa từ các phiên bản javascript, nó càng hỗ trợ các cú pháp đặc trưng của hướng đối tượng như interface, class,vv nên rất mạnh mẽ khi apply các design pattern.
  • Được các lib/framework khuyến khích sử dụng(vì bản thân nó cũng được dần chuyển qua viết bằng typescirpt)
  • Những dự án lớn thành công cũng đã áp dụng typescript
  • Một điều nữa là nó hỗ trợ rất tốt khi dùng 1 công cụ là visual code (hàng của microsoft) được nhiều ae frontend sử dụng, hỗ trợ suggest code và báo lỗi cực mạnh khi dùng typescirpt trong công cụ này

Hình dưới đây là các tool hỗ trợ typescipt

2> Bắt đầu cài đặt:

Để bắt đầu làm việc với Typescript Reactjs,một cách đơn giản ta dùng luôn bộ CRA(create-react-app) nổi tiếng:

Nếu bạn dùng npm:

npm install create-react-app
create-react-app <name-project> template --typecript

hoặc nếu với yarn

yarn add gloabl create-react-app
yarn create react-app my-app --template typescript

hoặc theo hướng dẫn từ bài này: https://create-react-app.dev/docs/adding-typescript/

Kết quả: Các file .js đều được viết bằng typescript

Nếu bạn dùng visual code (chắc bạn nào cũng dùng), là visual code đã nhận là đang dùng Typescript (mặc định hỗ trợ, và rất mạnh)

Tiếp theo: start app:

yarn start

hoặc

npm start

II> Tìm hiểu về Reacjs áp dụng typescript sẽ như thế nào:

1> Cách tạo component :

  • Với function: Bộ CRA sẽ có 1 ví dụ:
import React from 'react';
import logo from './logo.svg';
import './App.css'; const App: React.FC = () => { return ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <p> Edit <code>src/App.tsx</code> and save to reload. </p> <a className="App-link" href="https://reactjs.org" target="_blank" rel="noopener noreferrer" > Learn React </a> </header> </div> );
} export default App;

Qua ví dụ trên, ta thấy rằng để chỉ rõ là 1 component reactjs, ta cần thêm : React.FC sau tên component để khai báo. Để dễ dàng tìm hiểu, tớ sẽ tạo 1 ví dụ về điều khiến tắt mở bóng đèn.Đầu tiên là component tên là SwitchButton.tsx:

import React from 'react'; const SwitchButton:React.FC = () => { return( <p>The light is ON</p> )
} export default SwitchButton;

Lúc này tớ xóa thử đi chữ React.Fc, nó sẽ cảnh báo liền phải khai báo thêm loại cho nó Hay việc xóa đi return → cảnh báo rất chi tiết:

2> State:

a) giới thiệu và phân tích

Một vấn đề hay sử dụng trong khi làm việc với Reacjs, lần này tớ sẽ viết lại component SwitchButton bằng class component.

import React from 'react'; interface StateButton { stateLight: boolean,
} interface PropsButton { } export default class SwitchButton extends React.Component <PropsButton,StateButton> { constructor(props:PropsButton) { super(props); this.state = { stateLight: false, } } render() { return( <p>The light is {this.state.stateLight ? "ON" : "OFF"}</p> ); }
}
  • Lúc này, mình sẽ tạo cho nó 1 interface tên là StateButton, ở đây mình có thể khai báo cho nó các state có thể có trong component, ở đây mình tạo 1 state có tên là stateLight kiểu boolean chỉ trạng thái bật/mở công tắc.
  • Sau đó bạn chú ý ở đoạn tạo component:
export default class SwitchButton extends React.Component <PropsButton,StateButton>

( bạn đừng quan tâm PropsButton, ở đây mình tạo trước thui ✌)

b) các trường hợp lỗi:

Thế là mình có thể sử dụng như bình thường rồi đấy, giả dụ ở constructor mình set state nó kiểu khác boolen, thì điều gì xảy ra nhỉ:

Ồ, nó báo lỗi chi tiết là stateLight chỉ được kiểu boolean, không được set kiểu number! Quá tuyệt vời

Giả dụ mình lại thêm 1 state mới là name mà chưa khai báo state kiểu gì ở interface:

Báo lỗi liền, khá chặt chẽ! Tránh việc khai báo lung tung!

Qua ví dụ trên, ta có thể thấy rằng việc xây dựng reactjs với typescript rất chặt chẽ và chuyên nghiệp! Lại hỗ trợ rất tốt cho người lập trình viên trong việc cảnh báo họ, và cảnh báo rất nhanh! Tốc độ suggest code cũng nhanh hơn(có lẽ hàng của microsoft nên ăn khớp với nhanh, rất là tốt)!!

3> Props:

a) giới thiệu và phân tích

Thông thường ta hay dùng propstype hay flow-js, còn với typecript ta không cần phải import vào và việc hỗ trợ cũng rất tốt

(Chính facebook cũng khuyêndần chuyển sang typescript là nên dùng flowjs hay các package khác)

  • Đầu tiên, tớ đổi state quản lý tắt mở bóng đèn → props:
import React from 'react'; interface PropsButton { stateLight: boolean,
} export default class SwitchButton extends React.Component <PropsButton,{}> { render() { return( <p>The light is {this.props.stateLight ? "ON" : "OFF"}</p> ); }
}

Tương tự state, ta cũng tạo ra interface để khai báo loại cho props

  • Lần này mình sẽ tạo thêm 1 component cha tên là House → sẽ call component ButtonSwitch này:
import React from 'react';
import SwitchButton from './SwitchButton'; const House:React.FC = () => { return( <SwitchButton stateLight={false}/> )
} export default House;

b) các trường hợp báo lỗi:

Ở Component House này khi mình gọi SwitchButton:

  • props stateLight mình truyền kiểu khác boolean

  • Truyền thiếu props:

  • Các trường hợp truyền dư cũng báo lỗi:

III> Kết luận:

  • Typescript kết hợp với reactjs rất tốt, giúp reactjs được chặt chẽ hơn! Nó còn hỗ trợ lập trình viên và tương thích rất tốt với các editor.
  • Ngoài các ứng dụng trên, nó còn hỗ trợ với refs, event,… trong reacjts! hẹn sẽ viết ở bài sau!

IV> Tham khảo:

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 525

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 397

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 738

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 358

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 450

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 433