갑자기 타임어택과제로 타입스크립트로 리액트&리덕스를 리팩토링해서 제출하게됬다.
물론 완성하지 못했다. ㅠ 역시 3일만에는..무리인가보다 ㅠ docs고 구글이고 다 해도 오류가 한번나니까 연결되서 나니까 어질했다.
헷갈린다 헷갈려~
1. JSX.Element type
: JSX자료형을 말한다. 이 타입을 지정하고 싶다면 JSX.Element를 사용하도록
- JSX를 변수로 지정한다면
const fruits : JSX.Element = <p className = "apple"> </p>
const fuits:JSX.IntrinsicElement['p']=<p className = "apple" > </p>
이 두가지 다른 점은 태그를 앞에 지정해주냐 안해주냐다.
지정을 하면 Intrinsic을 붙여하는데 사전 찾아보니까 '본래 갖추어진'이라고 나온다... 이해하기 좋자면, 기존에있던 태그를 먼저 지정하니까? 그렇게 생각하고 넘어가야겠다.
2.컴포넌트
리액트에서 컴포넌트는 항상 return <JSX>였기 때문에 함수에서 return값을 타입 정해주듯 정해주면 된다.
const App() :Jsx.Element{
return ( 여기에 JSX가 옵니다. )
}
3.Props타입
**어제 했던 타임어택 프로젝트에서 제일 답답헀던게 props문제였다 ㅠ 타입지정을 어떻게 해야할지 고민되었음..🧐
//App.tsx
const App (): JSX.Element{
return (
<div>
<Main title={title} contents={contents}>
</div>
)
}
//Main.tsx 원래의 코드 였다면 이렇게
const Main =({title,contents})=> return (
<div className = "main">
<p>{title}</p>
<p>{contents}</p>
<div>
)
/*타입을 지정한다면 이렇게 */
const Main =(props:{title:string,contents:string}):JSX.Element=>return (
<div className = "main">
<p>{title}</p>
<p>{contents}</p>
<div>
)
아니면 밖에서 묶어줘도 된다.
타입스크립트에서 타입이 길어질 경우 따로 빼주듯이 type alias를 사용한다.
type Props = {
title: string,
contents: string
}
const Main=(props: Props): JSX.Element =>{
return (
<div className="main">
{props.title}
{props.contents}
</div>
)
}
4.state타입
-초기값이 있다? 알아서 지정됨
-초기값 없다? 제너릭으로 지정한다.
어제 리액트로 리팩토링을 하던 중에 하나하나 모든게 다 오류가 생기면서 멘붕이 왔었는데ㅋㅋㅋ
다시 재도전을 해봐야겠다. 내가 놓친 부분이 많은것 같다.😎
'TIL✨' 카테고리의 다른 글
설 쉬고 다시 프로젝트 TIL (0) | 2023.01.25 |
---|---|
심화프로젝트 시작_TIL(60) (0) | 2023.01.20 |
Object.assign _TIL(54) (0) | 2023.01.17 |
TIL(53) (0) | 2023.01.12 |
파이어베이스...ㅂㄷㅂㄷTIL(52) (0) | 2023.01.10 |