함수 타입 지정 방법, void 타입

Im Su Kyung·2024년 1월 26일
0

Typescript TIL

목록 보기
5/5
post-thumbnail

1. Function Parameter

(1) 길고 복잡한 코드 한 단어로 축약 가능
(2) 숫자 넣으면 다른 숫자 나오는 블랙박스 역할
(3) 결론 _ 함수는 parameter, return 값 타입 지정이 가능

function 함수(x) {
	return x * 2
}
함수(30)

: (x) 파라미터 (숫자 input 역할) (변수 작명과 같음)
: x * 2 return 할 값 (output 되는 값)


  • x 파라미터 자리에 숫자 타입만 입력 가능
function 함수(x:number) {
	return x * 2
}
  • return 되는 값은 숫자 타입으로 제한
function 함수(x:number) :number {
	return x * 2
}

2. void

아무것도 없이 공허함
return 할 자료가 없는 함수의 타입으로 사용 가능
실수로 뭔가 return 하는 것을 사전에 막을 수 있다.

function 내함수(x :number) :void { 
  return x * 2 //여기서 에러남 
} 

3. JS 함수과 다른점

타입 지정된 파라미터는 필수이다.

function 내함수(x :number) :void { 
  
} 
함수() // 에러 발생
// Expected 1 arguments, but got 0
// An argument for 'x' was not provided

  • 파라미터가 옵션일 경우에는 파라미터변수? : 타입
    파라미터변수? : 타입 도 가능
function 함수(x? : number) : void {

}
함수()

⭐ `?` 연산자는 들어올수도 있다 라는 뜻이지만 주의 ⭐

변수? : number변수 : number | undefined 와 같다.

function 함수(x : number | undefined) : void {

}
함수()
function 함수(x? : number) : void {

}
함수()

🤔 다음 함수는 왜 에러가 발생할까?
function 함수(x : number | string) : void {
	console.log(x+3) // 왜 에러가 발생할까?
}
함수(2)

: (x+3) x는 지금 number | string 타입이다.
: string + number [가능]
: string + number [가능]
: 이 외에는 불가능


  • 애배한 타입들은 미리 타입 검사가 필요하다 (Narrosing?)
function 함수(x : number | string) : void {
	if(x의 타입이 숫자면){
    	 console.log( x + 3 )
    }
}

4. Homework

(1) 이름을 파라미터로 입력하면 콘솔창에 "안녕하세요 홍길동" 을 출력해주고 아무것도 파라미터로 입력하지 않고 함수를 사용하면 "이름이 없습니다" 를 출력하는 함수 만들기 (또한, 파라미터와 return 타입지정도 잘하기)

function sayHello(x? : string) {
	if(x){
    	console.log('안녕하세요' + x)
    }else{
    	console.log('이름이 없습니다')
    }
}

(2) 함수에 숫자 또는 문자를 넣으면 자릿수를 세어 출력해주는 함수 만들기. 예를 들어, '245' 이런 문자를 입력하면 3이 return 되어야 한다. 숫자도 마찬가지로 9567 입력하면 4가 return 되어야 한다. (숫자 또는 문자 외 자료가 들어오면 안된다.)

function place(x : number | string) : number {
	return x.toString().length
}

(3) 결혼 가능 확률을 알려주는 함수 만들기

  • 함수의 파라미터로 월소득(만원단위), 집보유여부(true/false), 매력점수('상' or '중' or '하') 를 입력할 수 있어야 한다.

  • 월 소득은 만원 당 1점, 집 보유시 500점 & 미보유시 0점, 매력점수는 '상'일때만 100점으로 계산한다.

  • 총 점수가 600점 이상일 경우 "결혼가능"을 return 해줘야 한다. 그 외 아무것도 return 하지 않는다.

  • [예시] 결혼가능하냐(700, false, '중') 이렇게 사용할 경우 "결혼가능"을 return 해줍니다.

  • [예시] 결혼가능하냐(100, false, '상') 이렇게 사용할 경우 아무것도 return되지 않습니다.

function marry(
	money : number, 
    house : boolean, 
    charm : string
) : string | void {
    	let score : number = 0;
      	score += money; 
      	if(house === true){
        	score += 500
        }
      	if (charm === '상'){
        	score += 100
        }
      	if(score >= 600){
        	return '결혼 가능'
        }
    }
	console.log(marry(100, true, '상'))

: score 라는 변수를 만들고 money 에 따라 score +
: house 여부에 따라 score + 를 함

profile
Dev bestsu

0개의 댓글