inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 타입스크립트 올인원 : Part2. 실전 분석편

안녕하세요

해결된 질문

236

Milkyway

작성한 질문수 35

1

안녕하세요 궁금한 점이 있어 질문 드립니다.

아래 두 코드가 있는데 둘 다 알수 없는 구조의 객체를 매개변수로 받는 함수입니다.
첫번째는 매개변수의 값을 인덱스드 시그니처로 받았고 두번째는 객체 타입 그 자체로 받았습니다.
첫번째 코드는 문제없이 통과 되고 두번째 코드는 o[key] 부분에 오류가 나는데 에러 내용을 봐도 잘 모르겠어서 질문 드립니다.

제가 이해한건 object가 {}라고 하셨는데 {}는 전체타입(집합?)에서 null과 undefined를 제외한 나머지를 말한다 하셨습니다. 이때 object는 객체 뿐 아니라 문자열이나 숫자가 될수도 있기 때문에 에러가 난다 생각했습니다.

다른 글을 보니 코드에서 에러가 발생한 이유는 string literal 타입만 허용되는 곳에 string 타입을 사용했기 때문이라는데 object의 키는 문자열 리터럴 타입인데 반복문을 도는 key는 스트링 타입이라 그런건가요?

마지막으로 string으로 {}를 인덱싱 할수 없는데 왜 any 타입을 가지는 건지도 궁금합니다.

감사합니다!

function hasTwelveLetterKey(o: { [key: string]: any }) {
  for (const key in o) {
    if (key.length === 12) {
      return true;
    }
  }
  return false;
}
function hasTwelveLetterKey(o: object) {
  for (const key in o) {
    if (key.length === 12) {
      console.log(key, o);
      console.log(key, o[key]);
      // Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{}'
      // No index signature with a parameter of type 'string' was found on type '{}'.
      return true;
    }
  }
  return false;
}

 

typescript

답변 1

0

제로초(조현영)

object == {} == 전체 - null -undefined가 아니고요.

object가 객체 타입이고, {}는 전체 - null - undefined 타입입니다.

저기서 에러가 나는 이유는

말 그대로 o[key]가 any라서 에러가 나는 겁니다. key가 any가 아니고 o[key]가 any라서요.

0

Milkyway

아!! 완전히 잘못 생각했네요ㅠ 감사합니다!!

타입 오버라이딩

0

78

2

React19에서 useRef 타입 정의의 변화

0

128

2

jQuery를 $로 한 번 더 감싼 형태

0

58

1

typescript interface를 jsdoc으로 주석달 때

0

234

2

declare module시 import 위치

0

198

2

declare global 로 선언된 타입을 확장하는게 아닌 좁히는것도 가능할가요?

0

148

2

typescript 강의를 보고 개발을 하다가 강의와 다른 내용인데 물어볼곳이 여기밖에 없어서 질문 드립니다.

0

237

1

강의에 필요한 사전준비와 예제 코드 첨부

1

311

1

local.ts 예제코드 첨부 합니다.

1

230

1

redux 예제코드 가져와서 강의 보면서 따라하는데

1

248

1

react 함수 컴포넌트 타이핑은 있는데 클래스 컴포넌트 타이핑 예제 코드가 없네요.

1

287

1

axios 1.6.0 버전으로 보고 있는데영

4

393

1

Module '"axios"' has no default export 에러 나시는분들

0

881

1

안녕하세요, 제로초님 타입스크립트 axios 분석 강의보고 궁금한점이 있어서 질문드립니다

1

389

1

안녕하세요. 제로초님 당신의 강의 매니아 입니다. typescript 모듈 관련 질문이 있어서요.

0

269

1

axios catch 에서 error 타입에 대해 as 없이 이렇게 사용하면 어떨까요?

0

406

1

global 선언 시 export {}

0

298

1

initialState가 제네릭 S인 이유가 잘 이해가 되지 않습니다.

0

310

1

declare module vs declare namespace

0

478

1

declare namespace vs namespace

0

500

2

"axios": "1.4.0" 버전 axios type 코드가 강의와 다릅니다!

0

561

1

Redux type 설정 과정에서 발생한 오류 질문 (ts[2345])

1

383

2

index.d.ts 에서 global declare 선언을 했을 때와 하지 않았을 때의 차이

0

409

1

미들웨어가 커링패턴으로 이루어진 이유

0

442

1