소프트웨어 엔지니어링

함수에 함수 넣기 (타입스크립트)

W[더블유] 2023. 3. 4. 23:40

 

함수 속에 세 개의 파라미터로 문자, 함수, 함수를 넣어서, 문자를 넣으면 두 개의 함수가 역할을 해서 결과값을 출력해보고자 한다. 오늘도 나의 코딩 선생님이신 Chat GPT 님께 다음과 같이 공손히(?!) 영어로 물어봤다. 

 

[나] TypeScript에서, 문자열을 첫 번째 매개변수로, 함수를 두 번째 및 세 번째 매개변수로 가지는 함수 예제를 보여줄 수 있나요? 첫 번째 매개변수는 문자열, 두 번째 매개변수는 함수이며 문자열을 입력으로 받아 반환하는 함수, 세 번째 매개변수는 함수이며 문자열을 입력으로 받아 반환하는 함수입니다. 첫 번째 매개변수를 두 번째 매개변수(함수)의 입력 값으로 사용하고, 두 번째 매개변수(함수)에서 반환된 값을 세 번째 매개변수(함수)의 입력 값으로 사용한 후, 세 번째 매개변수(함수)의 반환 값을 콘솔에 출력합니다.

 

선생님께서는 흔쾌히 대답을 해주신다! 

 

[Chat GPT]

네, 물론입니다! 다음은 세 개의 매개변수를 가진 함수의 예제입니다. 첫 번째 매개변수는 문자열이며, 두 번째 매개변수는 문자열을 입력으로 받아 문자열을 반환하는 함수이고, 세 번째 매개변수는 문자열을 입력으로 받아 문자열을 반환하는 함수입니다:

 

function exampleFunction(
  str: string,
  callback1: (str: string) => string,
  callback2: (str: string) => string
) {
  const intermediateResult = callback1(str);
  const finalResult = callback2(intermediateResult);
  console.log(finalResult);
}

 

이 함수는 문자열 str을 첫 번째 매개변수로, 함수 callback1을 두 번째 매개변수로, 그리고 다른 함수 callback2를 세 번째 매개변수로 받습니다. 함수 내에서는 str 매개변수를 callback1에 인수로 전달하고, 반환된 문자열을 intermediateResult에 저장합니다. 그런 다음 intermediateResult를 callback2에 인수로 전달하고, 반환된 문자열을 finalResult에 저장합니다. 마지막으로, finalResult 문자열이 콘솔에 로그됩니다. 다음은 이 함수의 예제 사용 방법입니다:

 

function addExclamation(str: string): string {
  return str + '!';
}

function capitalize(str: string): string {
  return str.toUpperCase();
}

exampleFunction('hello world', addExclamation, capitalize);
// Output: HELLO WORLD!

이 예제에서 exampleFunction 함수는 문자열 'hello world', addExclamation 함수 및 capitalize 함수를 각각 첫 번째, 두 번째 및 세 번째 매개변수로 사용하여 호출됩니다. addExclamation 함수는 문자열에 느낌표를 추가하고, capitalize 함수는 문자열을 대문자로 변환합니다. 이러한 변환을 거친 후, 'HELLO WORLD!' 문자열이 콘솔에 로그됩니다.