• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

정의된 타입으로 타입을 제한하기 강의에 대한 질문입니다.

22.05.12 14:50 작성 조회수 149

1

현 강의에서
 
interface LengthType {
    length: number
}
function logTextLength2<T extends LengthType>(text: T): T {
    console.log(text.length)
    return text
}
 
logTextLength2('a')  
logTextLength2({ length: 123 })
 
이 코드에서 문자열은 기본으로 length속성이 있으므로 첫번쨰 호출시 동작 하지만, 제 개인적인 생각으로는 너무 혼란 스럽습니다. 뭔가 눈속임? 편법 ? 같은 느낌이고 , 타입스크립트의 정에서 벗어난 형태 인것 같기도 합니다... 혹시 현업에서도 이런 방식으로 사용하는지 궁금합니다. !
또한 이 코드를 보고 이렇게 생각하는 제가 아직 이해가 부족한건지
당연한 생각인지 한번 여쭙니다..

답변 1

답변을 작성해보세요.

2

안녕하세요, 눈속임이라기 보다는.. 제네릭의 타입 제한 정의에 맞게 명시적으로 { length: 123 } 뿐만 아니라 데이터 타입에 length 속성이 제공되는 문자열 타입도 사용할 수 있다는 사실에 주목하셔야 할 것 같습니다 :)

kwk8002님의 프로필

kwk8002

질문자

2022.05.16

네 선생님이 말씀하신데로 이해하겠습니다. 

답변 감사합니다!