inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

타입스크립트 입문 - 기초부터 실전까지

정의된 타입으로 타입을 제한하기

제네릭 타입 제한 강의에서 질문드립니다.

402

rmdk6qjs

작성한 질문수 1

3

안녕하세요, 제네릭 강의 부분에 '정의된 타입으로 타입을 제한하기' 강의에서 여쭤보고 싶은게 생겨 질문 드립니다.

logTextLength(10); 에서 에러가 출력되는 이유가 궁금합니다. 

수업과 핸드북 내용(https://joshua1988.github.io/ts/guide/generics.html#%EC%A0%9C%EB%84%A4%EB%A6%AD-%EC%A0%9C%EC%95%BD-%EC%A1%B0%EA%B1%B4)을 참조했을 때, 에러가 발생하는 이유는 logTextLength함수의 전달인자인 10인 숫자 타입에는 length 속성이 없기 때문이라고 하셨는데요,

 

그런데 수업 중 'T extends LengthType'으로 T 타입은 LengthType 내에 있는 모든 속성들을 갖고 있게 된다고 하셔서, logTextLength(10) 의 10이라는 숫자 타입에도 LengthType의 속성인 length를 갖게 된다고 생각했었습니다. 그런데 logTextLength(10) 이 에러를 출력하는 이유로, 10에 length 속성이 없기 때문이라고 하신 부분이 이해가 잘 안가 문의드립니다.

타입스크립트 es6 제네릭 javascript 제네릭타입제한 typescript

답변 1

0

캡틴판교

안녕하세요 rmdk6qjs님, 강의 내용을 다시 한번 확인해 보시면 좋을 것 같아요 :) 첨부해주신 함수의 인자는 length를 가진 객체만 허용이 됩니다. 숫자 10은 length 프로퍼티가 제공되지 않기 때문에 당연히 에러가 납니다 :)

0

rmdk6qjs

답변해주셔서 강의 돌려보고 이해됬습니다!

logTextLength함수에 T[] 대신 T extends LengthType으로 함수를 정의해 T타입에 length 속성이 있고 console.log(T.length) 에 에러가 나지 않게 된다는 설명에서 오해가 있었던 것 같습니다.

 

감사합니다 : )

TSLint

0

67

1

vscode eslint server 오류

0

82

1

안녕하세요. 기본타입- 튜플, 객체, 진위값 부분의 영상의 화면이 나오질 않습니다.

0

77

1

live server 설치 오류

1

372

2

강의 교안 pdf 는 따로 제공하지않나요?

0

287

2

npm i 설치 이유 문의

1

407

3

index.ts Delete `␍`eslintprettier/prettier 오류(빨간줄) 해결

2

289

3

vue 에서 jquery 사용 문제

1

696

2

TSLint 확장 프로그램은 현재 지원하지 않는다고 합니다.

1

501

2

강의 내용처럼 노란 밑줄이 작동하지 않아서 유사 질문들을 실행해보았는데요

1

544

1

section 3-1 JSdoc 타입이 추론되지 않아서 다음과 같이 수정했는데 이거 맞나요?

1

453

2

함수에 리턴 안됐다고 노란밑줄이 쳐져야하는데 없습니다

2

457

1

파일이 다른데 식별자가 중복되었다고 뜹니다.

1

445

2

빨간줄 에러 질문드립니다

1

489

2

마우스 갖다대면 리턴값 설명 나오는 거 질문드려요

1

358

2

js에서 @ts-check 적어도 체크하지 못하는 문제입니다

2

395

2

index.html에서 타입스크립트 콘솔 찍는 법 질문드립니다

1

567

2

섹션 1-3 추론 질문드립니다

1

355

2

왜 api쪽에는 왜 에러가 안나는지 궁금합니다.

1

325

2

const item1을 선언했을 때 타입을 선언해줘도 괜찮을까요?

1

391

1

전화번호부 타입선언

1

267

2

타입을 전역으로 분리

1

593

2

객체 선언 시 구분자는 쉼표, 세미콜론 모두 사용가능한건가요?

1

460

1

Git 관련 질문이 있습니다

1

672

2