• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 타입스크립트 함수에 타입 지정하는 법 숙제 질문

타입스크립트 함수에 타입 지정하는 법 숙제 질문

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #62525
    (숙제1) 이름을 파라미터로 입력하면 콘솔창에 "안녕하세요 홍길동"을 출력해주고
    아무것도 파라미터로 입력하지 않고 함수를 사용하면 "이름이 없습니다" 를 출력하는 함수를 만들어봅시다.
    파라미터와 return 타입지정도 잘 해봅시다. 
    제가 쓴 답
    function 안녕(x? :string) {
      if(typeof x == "string"){
        console.log(`안녕하세요 ${x}`)
      } else if(typeof x == "undefined"){
        console.log("이름이 없는디요")
      }
    }
    
    애플맨 답
    function sayHi(x? :string ){
    if (x) {
    console.log('안녕하세요 ' + x)
    } else {
    console.log('왜입력안함')
    }
    } 
    
    여기서 왜 함수 조건에 x만 달았는데도 동작하는지 모르겠음요
    x? :string은 x :(string | undefined)라는 union 타입이랑 같다고 했으니까
    저렇게 x로만 놔두면 타입스크립트가 발작할 거 같은데 또 조용하네요
    이게 string인지 undefined인지 타입스크립트가 어케 인식하나여
     
    #62545
     
    하다보니 추가로 질문 하나 하겠슴미다
    
    (숙제1) object 타입을 정의한 type alias 두개를 & 기호로 합칠 때 중복된 속성이 있으면 어떻게 될까요?
    
    이걸로 요리조리 해보고 있는데
    
    
    
    
    type AType = {name : string};
    type BType = {name : number, age : number};
    type Hypeboy = AType & BType;
    let asdf :Hypeboy = {name : "애플맨", age : 60}
    이렇게 치면 name 부분에서 에러 나면서 Type 'string' is not assignable to type 'never'.t(2322)
    요렇게 나오고
    
    Btype의 name을 boolean, null, undefined같은 걸로 정의하니까
    이번엔 name과 age에서 둘 다 저 에러가 뜨네요.
    
    요 never는 무엇인가요잉
    
    
    #62594

    codingapple
    키 마스터
    if (x) { 
    해놓으면 undefined가 들어오는 경우를 판단할 수 있어서 narrowing 역할을 해줄 수 있는듯요 
    
    말이 안되는 타입만들어내면 never로 변합니다 string과 number를 동시에 만족하는 타입은 세상에 없습니다
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠