리액트에서의 타입스크립트 작성을 위한 간단 매뉴얼
// 상위 컴포넌트
const MainComponent = () => {
return (
<SubComponent name="kim" />
)
}
// 하위 컴포넌트
const SubComponent = ({name}: {name : string}) => {
}
interface SubProps {
name: string;
age: number;
}
const SubComponent = ({name, age}: SubProps) => {
}
interface Human {
name: string;
age: number;
}
interface Block8 exntends Human {
license: boolean
}
const SubComponent = ({name, age, license}: Block8) => {
}
const handleClick = () => {
// 함수 로직
return true
}
const MainComponent = () => {
return (
<SubComponent onClick={handleClick} />
)
}
interface SubProps {
onClick: () => boolean
}
const SubComponent = ({onClick}: SubProps) => {
}
Error
const handleClick = (e: MouseEvent<HTMLButtonElement>) => {
// 이벤트 처리 로직
}
const handleKeyPress = (e: KeyboardEvent<HTMLInputElement>) => {
// 이벤트 처리 로직
}
try {} catch (error: Error){}
interface Human {
name: string;
age: number;
}
...
const [state, setState] = useState<Human | null>(null);
...
setState({ name: 'jh', age: 31 });
interface SubProps {
setState: React.Dispatch<SetStateAction<boolean>;
}
const SubComponent = ({setState}: SubProps) => {
}
type Work = {
id: number;
text: string;
done: boolean;
}
const [state, setState] = useState<Work[]>([])
타입 vs 인터페이스
개인적으로는 좀 더 유연한 interface를 선호합니다