본 포스팅은 노마드코더 React JS 마스터클래스를 수강 후 작성되었습니다.
1.
.tsx 로 파일 명을 가지게 된다.
2.
또는, 기존에 작업하던 것이 있다면, typescript를 전부 설치해주는 방법도 있다.
+) 그 이후 파일의 확장자를 다 .tsx로 해줘야한다.
어떠한 라이브러리들은 javascript 기반이라서 typescript 상에서 오류가 뜰 수 있다.
: 모든 유명한 npm 라이브러리를 가지고 있는 아주 큰 Github repository
여기서 라이브러리나 패키지의 type definition을 알려준다.
TypeScript에게 React component를 설명하는 방법은 다음과 같다.
"component를 type한다는 것 = component에게 type을 준다는 것
∴ 우리는 우리의 prop들을 코드 실행전 typeScript로 보호해주는 것
: 객체 모양을 typeScript에게 설명해주는 typeScript의 개념
Circle.tsx 파일을 새로 만든 EX
import styled from "styled-components";
interface ContainerProps {
bgColor: string;
}
interface CircleProps {
bgColor:string;
}
//bgColor의 type은 CircleProps의 object다!
function Circle({bgColor}: CircleProps) {
return <Container bgColor={bgColor} />;
}
//styled-components가 받는 props를 typeScript에게 설명
const Container = styled.div<ContainerProps>``;
export defaut Circle;
또 다른 예시는 아래와 같다.
interface PlayerShape {
name: string;
age: number;
}
//playerObj은 PlayerShape이다!라는 의미
const sayHello = {playerObj: PlayerShape) => `Hello ${playerObj.name} you are ${playerObj.age} years old.`;
sayHello({name:"nico", age:12})
default props와 optional props에 대해서 알아보자.
: 필수(required)가 X라, optional하게 props를 주는 것 (있을 수도 있고, 없을 수도 있어!)
optimal하게 props를 만들어주고 싶으면 ? 만 props 뒤에 붙이면 됨 ❗
//bgColor는 required이고, borderColor은 optimal
interface CircleProps {
bgColor: string;
borderColor?: string; //optimal props
}
: optimal props에서 정의되어있다면, 해당 값을, 정의가 안되어있다면 이 default 값을 보내!!
?? 를 통해 default props를 나타냄
//borderColor가 있다면, borderColor / 없다면 bgColor를 사용해줘!
<Container bgColor={bgColor} borderColor={borderColor ?? bgColor}>