개발자
import { useState } from "react"; type CounterProps = { initialValue: number; }; const Counter = (props: CounterProps) => { const { initialValue } = props; // 계정을 유지하는 하나의 상태를 useState()로 선언한다. 인수에는 초깃값을 지정한다. // count는 현재 상태, setCount는 상태를 업데이트하는 함수다。 const [count, setCount] = useState(initialValue); return ( <div> <p>Count: {count}</p> {/* setCount를 호출해서 상태를 업데이트한다 */} <button onClick={() => setCount(count - 1)}>-</button> <button onClick={() => setCount((prevCount) => prevCount + 1)}>+</button> </div> ); }; export default Counter; 책에 있는거 그대로 코딩 했는데 Property 'initialValue' is missing in type '{}' but required in type 'CounterProps' 이런 에러가 발생해요 왜 그런걸까요
답변 1
<Counter initialValue={5}/>처럼 initialValue를 포함하지 않고 <Counter /> 와 같이 작성하신 부분이 있나요? 작성하신 const Counter = (props: CounterProps) => { 는 이 함수가 props라는 인자를 받는데 그 인자의 타입이 CounterProps라는 뜻이고 type CounterProps = { initialValue: number; }; 라는 코드는 CounterProps 타입 내부에 있는 initialValue가 숫자라는 뜻입니다. 지금 당장은 <Counter /> 라고 호출한 것이 Counter({})와 같다고 보시면 되고 그렇다면 initialValue가 number라고 생각하는 함수 입장에서 initialValue가 number가 아닌, 심지어 미지정된 상태에서 왔다고 보시면됩니다. 그래서 <Counter initialValue={5}/> 즉슨 Counter({initialValue: 5})로 호출해야 함수가 원하는 형태로 인자가 넘어 가는것이죠
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 11월 14일
`CounterProps` 타입에는 `initialValue`라는 프로퍼티가 필요하다고 명시되어 있습니다. 이 말은 `Counter` 컴포넌트를 사용할 때, `initialValue` 값을 주어야 한다는 것을 의미합니다. 예를 들어 `Counter` 컴포넌트를 다음과 같이 사용해야 합니다: ```jsx <Counter initialValue={0} /> ``` 위와 같이 컴포넌트를 사용할 경우, 에러 메시지가 사라질 것입니다. 위의 예제에서처럼 `initialValue` prop을 제공하지 않으면, TypeScript는 오류를 발생시켜서 개발자에게 필수 prop이 누락되었음을 알려줍니다. 만약 `initialValue`가 선택적인 값이게 하고 싶다면, `CounterProps` 타입 선언 시 '?'를 추가하여 아래와 같이 수정할 수 있습니다: ```jsx type CounterProps = { initialValue?: number; }; ``` 그러면 해당 프로퍼티는 선택적으로 처리되며 초기 값이 제공되지 않으면 undefined로 간주됩니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!