타입스크립트~ 갈겨볼까~
TypeScript는 MS에 의해 개발/관리되고 있는 오픈소스 프로그래밍 언어로, JavaScript에 타입을 부여한 자바스크립트가 확장된 언어이다.
npx create-react-app 내 앱 이름 --template typescript
npm i --save-dev @types/styled-components
npm i styled-components
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
npm i --save-dev @types/styled-components
// -Circle.tsx
import styled from "styled-components";
const Container = styled.div``;
function Circle() {
return
<Container />
}
export default App;
Circle
을 App
안에서 사용해보자// -App.tsx
function App() {
return
<div>
<Circle />
</div>
}
Circle
이 bgColor
prop 을 필요로한다고 가정해보자// -Circle.tsx
function Circle({ bgColor }) {
return
<Container />
}
// -App.tsx
function App() {
return
<div>
<Circle bgColor="teal" />
<Circle bgColor="tomato" />
</div>
}
bgColor
가 뭐냐고 불평함interface
를 사용해 객체 모양을(object shape) typescript 에게 설명해주자interface CircleProps {
// 이름은 아무렇게나 지어도됨
// 여기에 객체모양을 설명해주면 된다
bgColor : string;
}
// -Circle.tsx
function Circle({ bgColor }: CircleProps) {
return
<Container bgColor={bgColor}/>
}
div
임// -Cricle.tsx
interface ContainerProps {
bgColor : string;
}
const Container = styled.div<ContainerProps>`
width:200px;
height: 200px;
border-radius: 100px;
background-color: ${props => props.bgColor};
`;
bgColor
가 설정된 ~ 동그라미 두개 완성!interface
에 작성했던 것 처럼 prop 을 적어주면, 필수(required)로 넣어줘야하는 prop이 되는데,?
를 붙여주면 된다!string
또는 undifinde
성질을 가지게 된다.// -Circle.tsx
interface CircleProps {
bgColor: string;
bordrColor? : string; <<<----
}
function Circle({ bgColor, bordrColor }:CircleProps) {
return <Container bgColor={bgColor} bordrColor={bordrColor} />;
}
interface ContainerProps {
bgColor: string;
borderColor: string;
}
const Container = styled.div<ContainerProps>`
.
.
.
border: 1px solid ${props => props.borderColor}; <<<----
`;
Circle
컴포넌트 안에서는 bordrColor 가 required 인 상태,Container
스타일 컴포넌트에서는 bordrColor 가 아닌 상태이다.// -App.tsx
function App() {
return (
<div>
<Circle bgColor="teal" bordrColor="yellow"/>
<Circle bgColor="tomato" />
</div>
)
}
<Container bgColor={bgColor} ***bordrColor={bordrColor}*** />
undifined
가 될 수도 있다고 설정한 상태라서.undifined
값 가질 수 있는거 실화냐? 확인하셈. 경고띄운다.)undefined
상태라면 yellow 적용해주삼"function Circle({ bgColor, bordrColor }:CircleProps) {
return <Container bgColor={bgColor} bordrColor={bordrColor ?? "yellow"} />;
}
function Circle({ bgColor, bordrColor }:CircleProps) {
return <Container bgColor={bgColor} bordrColor={bordrColor ?? bgColor} />;
}
background-color
와 동일하게 설정해놔서 안보이는거지롱.function Circle ({ bgColor, borderColor = "white" } : CircleProps)
두번째 페이지에서 보자..