• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

interface type정의시 Object.values의 타입 지정을 어떻게 해주어야 할지 궁금합니다.

22.10.26 12:54 작성 조회수 369

1

현재 강의 내용 처럼 딕셔너리 패턴으로 interface를 작성하는게 아닌 아래 코드처럼 하나의 key에 대한 type을 지정해주고 Object.values로 생성한 array의 array method를 사용해 value 타입을 보면 typescript가 value들의 타입을 인지하지 못해 any 타입으로 되는 것 같습니다.

 

위 상황에서 value의 type을 설정해 주려면 아래 코드처럼 value에 직접 타입을 넣어주어야 하는 것일까요?

아니면 다른 방법이 있는건지 궁금합니다.

 

interface StringRegexDictionary {
  regExp: RegExp;
  str: string;
  obj: {
    one: number;
    two: string;
  };
}

const obj: StringRegexDictionary = {
  regExp: /abc/,
  str: 'string value',
  obj: {
    one: 1,
    two: '둘',
  },
};

Object.keys(obj).forEach(key => {
  console.log(key);
});

Object.values(obj).forEach(
  (
    value: (RegExp | string) & {
      one: number;
      two: string;
    }
  ) => {
    console.log(value);
  }
);

답변 1

답변을 작성해보세요.

0

안녕하세요, 원하시는게 keyof 일까요? 객체의 key와 value의 타입을 구하는 방법은 아래 링크 참고해 보시면 될 것 같아요 :)

https://stackoverflow.com/questions/53662208/types-from-both-keys-and-values-of-object-in-typescript