개발자

타입스크립트 인터페이스에서 string 타입 유형을 제대로 인식하지 못하는 문제?

2023년 02월 28일조회 125

foods라는 객체배열을 선언하고 Food 타입을 정의했는데요. foods의 type을 string으로 인식해서 Food type의 type인 'Dairy' | 'Protein' 로 인식을 못하는 문제입니다 ㅜ as Food[] 로 타입 단언 해주면 해결되긴 하는데 타입 단언이 안좋다고 들어서요. 이런 에러코드가 나와요. Types of property 'type' are incompatible. Type 'string' is not assignable to type 'foodType' 아래는 코드입니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

인기 답변

손정현님의 프로필 사진

안녕하세요! 타입스크립트는 기본적으로 type을 명시해주지 않으면 타입 추론을 하게됩니다. 질문자님의 코드를 봤을때 타입스크립트 입장에서는 foods 속 객체들이 Food임을 명확하게 알수없기때문에 타입 추론을 하고 있어요. 동희님 의견처럼 타입스크립트가 에러가 나고있는 코드를 첨부해주시면 답변에 도움이 될 것 같습니다. 우선 제가 예상하기로는 const someFunc = (foods: Food[]) => {...} 형태의 함수가 있을때 someFunc(foods)로 호출하시면 말씀하신 에러가 날 것 같은데요. 이거는 foods를 선언하실때 const foods: Food[] = [...] 로 선언해주시면 해결할 수 있는 문제인것 같네요. 이 케이스에서는 타입 추론 대신 foods에 명확한 타입을 명시해줌으로서 해결하는 방법이에요. 다만 이렇게 타입을 명시해주는게 어쩔 때는 독이 될 수 있어서 케바케로 타입 추론과 명시적인 타입을 혼용해서 쓰는게 좋은것 같아요. ex) 대개 함수의 리턴 타입은 타입 추론으로 하시는게 오히려 좋을수도 있습니다 참고해보시면 좋을 것 같아요 :) - https://www.typescriptlang.org/docs/handbook/type-inference.html

강동희님의 프로필 사진

선언하신 foods를 참조해 사용할 경우 string으로 인식하지는 않을것 같습니다만.. 실제로 저 객체를 사용하셨을때 타입스크립트가 string 이라고 판단하고 있는 코드를 첨부해주시면 질문에 의도에 부합하는 답변이 나올거라고 생각합니다😁

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!