DEV Community

Cover image for Implementasi TypeScript pada React JS
Drian
Drian

Posted on

Implementasi TypeScript pada React JS

Sebelumnya kita sudah memahami apa itu TypeScript. Jika belum, bisa kunjungi: Apa itu TypeScript?

Kali ini kita akan belajar implementasi TypeScript pada project React JS kita, fyi React JS adalah sebuah library JavaScript yang digunakan untuk mempermudah proses Development front end.

1. React Element dan Props

import { ReactElement } from "react";

type HeadingProps = {
  title: string;
};

const Heading = ({ title }: HeadingProps): ReactElement => {
  return <h1>{title}</h1>;
};

export default Heading;
Enter fullscreen mode Exit fullscreen mode

Pada contoh di atas kita mendefinisikan types pada props title dengan membuat sebuah type HeadingProps yang berisi title: string.

Ketika Komponen Heading di panggil di komponen lain kita akan di beritahu tipe data props dari title dan akan ada error jika memberikan title dengan tipe data lain. Sebagai contoh

import Heading from "./components/Heading"

const Main = () => {
   return (
     <>
       <Heading title={2023} />
     </>
   )
}

export default Main;
Enter fullscreen mode Exit fullscreen mode

Maka program di atas akan mendapat warning bahwa title hanya menerima tipe data string.

Lalu kita mempunyai ReactElement pada program:

import { ReactElement } from "react";

const Heading = ({ title }: HeadingProps): ReactElement => {
  return <h1>{title}</h1>;
};
Enter fullscreen mode Exit fullscreen mode

Dimana (): ReactElement berfungsi untuk menentukan return dari fungsi heading menjadi Elemen HTML React.

2. React.FC
Kita juga bisa menggunakan cara seperti di bawah:

import React from "react"

export const Section: React.FC<{ title: string }> = ({ children, title }) => {
  return (
     <section>
        <h2>{title}</h2>
    <p>{children}</p>
     </section>
  );
}
Enter fullscreen mode Exit fullscreen mode

React.FC<{ title: string }>: Ini menunjukkan bahwa Section adalah functional component (FC) dan menerima properti dengan tipe objek yang memiliki properti title yang bertipe string.

3. Rekomendari penulisan code dan penggunaan default value

import React from "react"

type SectionProps = {
   title?: string;
   children: ReactNode;
}

export const Section = ({ children, title: "My Subheading" }: SectionProps ) => {
   return (
      <section>
         <h2>{title}</h2>
     <p>{children}</p>
      </section>
   );
}
Enter fullscreen mode Exit fullscreen mode

Kita bisa membuat sebuah type sebagai contoh SectionProps di mana kita menentukan bahwa title menjadi opsional karena ada tanda ? disana dan memiliki tipe data string, lalu children kita tentukan type nya dengan ReactNode.

Pada title memiliki sebuah default value title: "My Subheading", karena disini saya mengatur title sebagai opsional, jadi ketika komponen pemanggil tidak menyertakan title secara otomatis default value bekerja.

4. Implementasi component di atas

import Heading from "./components/Heading";
import { Section } from "./components/Section";

function App() {
  return (
    <>
      <Heading title={"Hello World!"} />
      <Section>This is my first Section</Section>
      <Section title="Second sub heading">This is my second Section</Section>
    </>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

5. Menggunakan useState di typescript
Penggunaan types pada useState cukup simpel kita hanya perlu menambahkan di antara useState dan ()

contoh:

// Normalnya
const [count, setCount] = useState(0)

// Mendefinisikan type secara langsung
const [count, setCount] = useState<number>(0)

// Union type boleh number boleh null
const [count, setCount] = useState<number | null>(null)
Enter fullscreen mode Exit fullscreen mode

Sekian Tutorial typescript react saya, terimakasih

Top comments (2)

Collapse
 
afifudinmtop profile image
Afifudin Maarif

mantab lanjutkan mas

Collapse
 
driannaird profile image
Drian

siap