안녕하세요.
타입스크립트 '함수와 methods에 type alias 지정하는 법' 강의를 듣고,
마지막 과제를 응용하다가 질문이 생겨 올립니다.
밑에 코드의 기능을 간략하게 설명하자면 이렇습니다.
1. 여자친구이물질제거 함수는 문자에 있는 숫자들을 제거해줍니다.
2. 여자친구광내기 함수는 문자에 있는 "-" 를 제거해줍니다.
3. 여자친구탄생 함수는 최종적으로 문자만 콘솔에 보여줍니다.
function 여자친구이물질제거(x: string | number): string {
let arr = [];
if (typeof x === "string") {
arr.push(...x);
}
let result = arr.filter((a) => isNaN(a));
return result.join("");
}
function 여자친구광내기(x: string): string {
let arr = [...x];
let reuslut = arr.filter((a) => a !== "-");
return reuslut.join("");
}
type WashMyGirl= (
number: string,
여자친구이물질제거: (x: string) => string,
여자친구광내기: (x: string) => string
) => void;
let 여자친구탄생: WashMyGirl= function (
girlfriend,
여자친구이물질제거,
여자친구광내기
) {
let num = 여자친구이물질제거(girlfriend);
let reuslut = 여자친구광내기(num);
console.log(reuslut);
};
여자친구탄생("0아4-야56-카-1-", 여자친구이물질제거, 여자친구광내기);
위의 코드를 실행하면 "아야카" 라는 여자친구가 콘솔창에 탄생하게 됩니다.
그런데 type WashMyGirl에 여자친구이물질제거 함수 return 타입을 string | void 라고 했을 경우,
여자친구이물질제거(girlfriend) 여기 girlfriend에 타입 오류가 생깁니다.
그렇지만 밑에 여자친구광내기 함수 return 타입에 string | void 라고 했을 경우 아무 오류가 생기지 않습니다.
분명 return 값이 존재하고, void or string인데, 왜 파라미터 num에 'void' 형식은 'string' 형식에 할당할 수 없습니다."
라고 뜨는건가요?