TypeScript에서 함수 매개변수로 입력된 함수

Shuvayan Ghosh Dastidar 2023년6월21일
  1. TypeScript의 함수에서 형식화된 콜백 사용
  2. TypeScript에서 인터페이스를 사용하여 매개변수로 입력된 함수
TypeScript에서 함수 매개변수로 입력된 함수

TypeScript에서는 다양한 유형으로 구성된 다양한 변수와 함께 강력한 유형과 약한 유형의 함수를 다른 함수의 함수 매개변수로 전달할 수도 있습니다.

이는 JavaScript의 기능적 프로그래밍 패러다임으로 인해 다양한 함수가 다른 함수의 매개 변수로 전달될 수 있으며 TypeScript는 해당 함수가 입력되도록 보장합니다. 이 자습서에서는 입력된 함수를 함수 매개 변수로 사용하는 방법을 보여줍니다.

TypeScript의 함수에서 형식화된 콜백 사용

다양한 유형의 콜백을 함수 정의에 사용할 수 있습니다. 콜백은 서로 다른 유형을 가질 수 있으며 서로 다른 함수의 매개변수 역할을 할 수 있습니다.

다음 코드 블록은 이에 대한 데모를 보여줍니다.

enum LogLevel {
    DEBUG,
    INFO,
    DANGER
}

interface LogFunction {
    (message : string, level? : LogLevel) : void
}

function showLogMessage(message : string, level : LogLevel = 5) {
    switch(level){
        case LogLevel.INFO:
            console.info("Message : " , message);
            break;
        case LogLevel.DEBUG:
            console.debug("Message : " , message);
            break;
        case LogLevel.DANGER:
            console.error("Message : " , message);
            break;
        default :
            console.log("Message : " , message);
    }
}

class Compute {
    compute(callback :LogFunction) {
        // Some Computation
        var a = 5 + 6;
        callback('Computed value of a : ' + a);
    }
}

var computeObj = new Compute();
computeObj.compute(showLogMessage);

출력:

"Message : ",  "Computed value of a : 11"

위는 유형이 지정된 함수가 다른 함수의 함수 매개 변수로 사용되는 방법을 보여줍니다. Compute 클래스에는 Compute 함수가 있으며 LogFunction 유형의 콜백을 받아 일부 계산 후 콜백을 호출합니다.

compute 함수를 호출하는 동안 callback 구현을 사용할 수 있습니다. 이 구현에서 showLogMessageLogFunction 인터페이스를 구현하는 데 사용됩니다.

TypeScript에서 인터페이스를 사용하여 매개변수로 입력된 함수

다른 함수에 매개변수로 전달되는 함수는 함수 정의에 정의된 유형을 가질 수 있거나 인터페이스를 사용하여 함수의 유형을 정의할 수 있습니다.

다음 코드 블록은 함수를 다른 함수의 매개변수로 전달하는 동안 달성할 수 있는 다양한 유형의 타이핑을 보여줍니다.

class Animal {

    name : string;

    constructor( name : string){
        this.name = name;
    }

    showInfo(speak : () => void){
        console.log(this.name);
        speak();
    }
}

var dog = new Animal('Dog');
dog.showInfo(() => console.log("Bark"));

출력:

"Dog"
"Bark"

위의 예는 showInfo 함수에 전달된 speak 콜백 함수의 인플레이스 유형 정의를 보여줍니다. speak 기능은 정의로 인터페이스를 가질 수도 있습니다.

interface SpeakCallBackFn {
    () : void
}


class Animal {

    name : string;

    constructor( name : string){
        this.name = name;
    }

    showInfo(speak : SpeakCallBackFn){
        console.log(this.name);
        speak();
    }
}

var cat = new Animal('Cat');
cat.showInfo(() => console.log("Meow"));

출력:

"Cat"
"Meow"

따라서 위는 인터페이스를 사용하여 입력된 함수의 구현을 보여줍니다.

Shuvayan Ghosh Dastidar avatar Shuvayan Ghosh Dastidar avatar

Shuvayan is a professional software developer with an avid interest in all kinds of technology and programming languages. He loves all kinds of problem solving and writing about his experiences.

LinkedIn Website

관련 문장 - TypeScript Function