TS: 함수_12.15

송철진·2022년 12월 15일
0

Final Project

목록 보기
5/8

함수 | 타입스크립트, 코딩앙마
https://youtu.be/prfgfj03_VA

함수

// return 값이 number타입일 때
function add(num1: number, num2: number):number {
	return num1 + num2;
}

// return 값이 없을 때
function add(num1: number, num2: number):void {
	console.log(num1+num2)
}
// return 값이 true, false 일 때
function isAdult(age: number):boolean {
	return age>19;
}

선택적 매개변수(optional parameter) : ?

function hello(name?: string){
    return `Hello ${name || "world"}`
}

const result = hello() // 물음표가 있어야 Error 표시가 안 보임

선택적 매개변수는 필수 매개변수보다 뒤에 와야 한다

function hello(name: string, age?: number): string{
    return `Hello ${name} You are ${age}`
}

선택적 매개변수를 필수보다 앞에 쓰고 싶다면 아래와 같이 쓸 수 있다

function hello(name: string | undefined, age: number){
    return `Hello ${name} You are ${age}`
}
const result = hello(undefined, 19) 

예) rest 연산자: 배열 타입

function add(...nums: number[]){
    return nums.reduce((result, num) => result + num,0);
}

console.log(add(1,2,3), add(1,2,3,4,5,6,7,8,9,10)) // 6, 55

매개변수: this

interface User {
    name: string;
}
// User 타입인 객체 Sam에 대하야 
const Sam: User = {name: 'Sam'}
// bind를 이용해 this를 Sam객체로 명시한다
function showName(this: User){
    console.log(this.name)
}

const a = showName.bind(Sam);
a(); // "Sam"

매개변수 this + α

interface User {
    name: string;
}
// User 타입인 객체 Sam에 대하야 
const Sam: User = {name: 'Sam'}
// (this 다음부터~) 2개의 매개변수를 받는다
function showName(this: User, age: number, gender: "m" | "f"){
    console.log(this.name, age, gender)
}

const a = showName.bind(Sam);
a(30, "m"); // "Sam"

bind | 코딩앙마, 중급자바스크립트
https://youtu.be/KfuyXQLFNW4

오버로드

: 동일한 매개변수지만 경우에 따라 서로 다른 타입을 반환 시.

  • 함수 내에 분기를 해주었지만 반환되는 값이 User타입인지 string타입인지 판단할 수 없어서 표시되는 에러

👉

interface User {
    name : string;
    age: number;
}
// 오버로드
function join(name: string, age: string): string;
function join(name: string, age: number): User;
function join(name: string, age: number | string): User | string{
    if (typeof age === "number") {
        return {
            name,
            age
        };
    } else {
        return "나이는 숫자로 입력해주세요.";
    }
}

const sam: User = join("Sam", 30); 
const jane: string = join("Jane", "32"); 
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글