
const funA = (num: number) : void => {
console.log("funA");
}
const TypeA = {
str: String;
num: number;
};
const TypeB = {
bool: boolean;
};
type TypeC = TypeA & TypeB;
const TypeC = {
str: "A",
num: 10,
bool: false,
};
type TypeD<T> = {
val: T;
};
const strObj: TypeD<String> = { val: "10};
--useState 정의 시 타입 사용
const [str, setStr] = useState<String>("");
user.ts
export type User = {
id: number;
name: string;
age: number;
personalColor: string;
hobbies: string[];
};
App.tsx
import { useEffect, useState } from "react";
import { ListItem } from "./components/ListItem";
import axios from "axios";
import type { User } from "./types/user";
export const App = () => {
// 얻은 사용자 정보
const [users, setUsers] = useState<User[]>([]);
// 화면 표시 시 사용자 정보를 얻는다
// ※ 실제로는 엔드포인트가 존재하지 않으므로 주의
useEffect(() => {
axios.get<User[]>("https://example.com/users").then((res) => {
setUsers(res.data);
});
}, []);
return (
<div>
{users.map((user) => (
<ListItem
id={user.id}
name={user.name}
age={user.age}
personalColor={user.personalColor}
hobbies={user.hobbies}
/>
))}
</div>
);
};
import type { FC } from "react";
import type { User } from "../types/user";
export const ListItem: FC<User> = (props) => {
const { id, name, age, personalColor = "grey", hobbies } = props;
return (
<p style={{ color: personalColor }}>
{id}:{name}({age}) {hobbies?.join(" / ")}
</p>
);
};
user.ts
export type User = {
id: number;
name: string;
age: number;
personalColor?: string;
hobbies?: string[];
};
React & Typescript를 같이 사용하면 좋은 효과성 있음
변수, 함수, 컴포넌트 등에 타입을 정의해둠으로써 쓸데없는 에러를 방지할 수 있게됨.