트러블 슈팅

형식의 인수는 'string' 형식의 매개 변수에 할당될 수 없습니다.

5kiran 2023. 2. 13.
반응형

내가 객체 타입의 데이터를 매개변수로 넘겨줄 때 그 매개변수의 타입을 string으로 해놓고 넘겨주고 있어서 발생한 오류였다. 

 

타입을 일일이 지정해서  넘겨주는 데이터와 전달하는 파라미터 사이의 데이터 타입이 일치해야 한다.

 

예를 들어 아래와 같이 입력하고 있었다면

const data = {
    name: '5kiran', 
    age: 30, 
    job: 'developer',
}

const userInfo = (user: string) => {
	console.log('user', user)
}

이를 해결하기 위한 방법

1. 객체 형태를 문자열 형태로 변환

// 타입만 string으로 취급하는 객체
const user = "{ name: '5kiran', age: 30, job: 'developer'}"

const onSubmit = (user: string) => {
	// 그럼 여기서 이렇게 변환해주면 되지 않을까
    const data = JSON.parse(user)
	console.log('name', user.name)
}

2. interface 정의하기

// 타입만 string으로 취급하는 객체
interface User: {
    name: string
    age: number
    job: string
}

const user = {
    name: '5kiran', 
    age: 30, 
    job: 'developer',
}

const userInfo = (user : User) => {
	console.log('name', user.name)
}
반응형

댓글