본문 바로가기
typescript

[typescript] 함수

by 남민섭 2023. 2. 24.
728x90
반응형

함수타입선언

매개변수에 타입설정, 리턴값에 타입설정

 

1)인수와 반환 값이 있을 때

let myFunction: (arg1: number, arg2: number) => number;
myFunction = function(x,y){
    return x + y
}
//화살표 함수
myfunction =(x,y) => {
	return x + y
}

let num:number = myFunction(10,20);
console.log(num)
function myFunction2(x: number, y: number): number {
    return x + y
}

 

2)인수와 반환값이 없을 때 void (리턴이 없을때 사용)

function myFunction3() : void {
    console.log("hi");
}

let myFunction4: () => void;
myFunction4 = function(){
    console.log("hi")
}

 

3) interface

interface Add {
    (num1: number, num2: number): number;
}

let myFunction5: Add = function(num1, num2) {
    return num1 + num2
}

 

4) 매개변수가 여러개일 때 (선택적 매개변수가 뒤로 가야함. 앞에 있으면 에러 발생)

function printUser(name: string, age?: number) {
    return `Hello ${name} age ${age}`;
}
printUser("green");

 

5) 함수 옵셔널 매개변수

//함수 옵셔널 매개변수
function showName(name?: string) {
    return` Hello ${name} || 'aaa'`;
}
//두번째 방법
function showName2(name="aaa"){
    return `Hello ${name}`
}

console.log(showName("green"))
console.log(showName());
console.log(showName2("green"))
console.log(showName2())

//Hello green || 'aaa'
//Hello undefined || 'aaa'
//Hello green
//Hello aaa

 

6)함수 나머지 매개변수

//함수 나머지 매개변수
function addArr(...nums:number[]){
    console.log(nums);
}

addArr(1, 2, 3);
addArr(1, 2, 3, 4, 5, 6, 7, 8)


//[ 1, 2, 3 ]
//[1, 2, 3, 4, 5, 6, 7, 8]

 

7) 함수에서 this타입 지정

//함수에서의 this 타입 지정
interface User2 {
    name: string
}

let yellow: User2 = {
    name: "yellow"
}
function printUserName(this:User2){
    console.log(this.name)
}

const myFun = printUserName.bind(yellow)
myFun()

function printUserName2(this:User2, age:number){
    console.log(age, this.name);
}

const myFun2 = printUserName2.bind(yellow);
//전달된 값 30은 this다음 매개변수에 전달됨
myFun2(30);


//yellow
//30 yellow

 

this 참고

2023.01.23 - [javascript 고급문법] - [javascript] this키워드

 

[javascript] this키워드

this 키워드는 사용되는 위치에 따라 this키워드에 바인드 된 객체가 달라짐! 콘솔에 this를 입력하면 console.log(this) 출력값 함수 안에 넣었을 때 function a() { console.log(this) } a() 출력값 this는 기본적으

uou413.tistory.com

 

8)함수 오버로드 (리턴해야할 타입이 다른 타입이 있어야 할 때)

이름은 같고 매개변수 타입과 반환타입이 다른 여러 함수를 만들 수 있음
다양한 구조의 함수를 생성하고 관리할 수 있음

interface Person200 {
    name: string;
    age: number;
}

function join(name: string, age: string): string;
function join(name: string, age: number): Person200 ;  
function join(name:string, age: string | number) : string | Person200 {
    if(typeof age === "number") {
        return {
            name: name,
            age: age
        }
    } else {
        return "나이는 숫자로 입력하세요";
    }
}

const green2: Person200 = join("green", 30);
const blue: string = join("blue", "hi")
728x90
반응형

'typescript' 카테고리의 다른 글

[typescript] Enum 열거형 타입  (0) 2023.02.24
[typescript] 배열타입  (0) 2023.02.24
[typescript] interface  (0) 2023.02.24
[typescript] 타입 기본  (0) 2023.02.24
[typescript] 기초 1-1(터미널 출력)  (0) 2023.02.16

댓글