1. 함수 작성

const add = (num1: number, num2: number):void => {
  console.log(num1 + num2)
}

 

 

2. 선택적 매개변수

const hello = (name?: string) => {
  return `Hello, ${name || 'world'}`
}

hello() // Hello, world
hello('purple') // Hello, purple

 

 

3. 매개변수 옵션값

// 옶션값이 뒤에 있는 경우
const hello = (name: string, age?: number): string => {
 if (age !== undefined) {
  return `Hello, ${name}. You are ${age}.`;
 } else {
  return `Hello, ${name}.`;
 }
}

hello('Sam',30) // "Hello, Sam. You are 30." 
hello('Sam')    // "Hello, Sam." 

// 옶션값이 앞에 있는경우
const hello2 = (age: number | undefined, name: string): string => {
 if (age !== undefined) {
  return `Hello, ${name}. You are ${age}.`;
 } else {
  return `Hello, ${name}.`;
 }
}
 
hello2(undefined,'Sam')  // "Hello, Sam."

 

 

4. 나머지 매개변수

const add = (...nums: number[]) => {
 return nums.reduce((acc,cur) => acc + cur, 0)
}

add(1,2,3) // 6

 

 

5. This 

// 1. interface
interface User {
  name: string;
}

// 2. interface로 객체 Sam 생성
const Sam: User = { name:'Sam'}

// 3. 함수 설정 (화살표 함수로 작성하면 오류가 생긴다)
function showName(this:User ,age:number, gender:'m'|'f') {
  console.log(this.name, age, gender)
}

const getSame = showName.bind(Sam) // showName함수가 Sam 객체를 보여주도록 함

getSame(30,'m') // "Sam",  30,  "m"

 

 

6. 매개변수 타입에 따라 결과가 다를 때

// 1. interface
interface User {
  name: string
  age: number
}

// 2. 오버로드를 사용해서 타입에 따른 결과를 다를게 설정
function join(name: string, age: number): User;
function join(name: string, age: string): string;
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","30")

+ Recent posts