javaScript/typeScript
function
부엉이사장
2024. 8. 14. 13:45
# 함수에도 각각 요소에 타입을 지정할 수 있다.
# 파라미터에 타입 지정하기
function fuc(para: number) {}
fuc("dori");
이렇게 왜 파라미터는 숫자타입인데 fuc('dori')로 문자타입을 인수로 넣어 호출하려 하느냐? 하면서 뭐라고함
# 리턴값에 타입 지정하기
function fuc(para: number): number {
return "muzzi";
}
함수 옆에다가 또 적어주면 되는데
리턴값이 number이어야 하는데 string 인 'muzzi'가 나왔다고 에러를 띄워준다
# 리턴값 안정해주면?
function fuc(para: number) {
return "muzzi";
}
에러 안뜬다.
이것도 any타입으로 나오는듯.
# 리턴값 '없어야 하는' 함수
function fuc(para: number): void {
return "muzzi";
}
타입을 void로 정해주면 리턴값이 없어야 한다는 함수다.
근데 리턴값이 있으므로 에러를 띄운다.
void는 아예 비어있는 뜻이다.
# 파라미터에 void타입을 지정하면?
function fuc(para: void) {
return "muzzi";
}
fuc();
fuc("바보");
파라미터를 넣어서 호출한 fuc('바보')에서 에러가 띄워진다.
# void 단순 예시
let test: void;
test = "muzzi";
test 타입에 void로 타입넣고 거기에 muzzi라는 스트링을 재할당하려고 하면
에러띄워준다.
그냥 void타입을 일반 식별자에 지정하면 그냥 쓸모없는 메모리 차지하는 ㅄ변수가 되는듯?
# 파라미터 있든 없든으로 하려면?
function fuc(para?: number) {
return "muzzi";
}
fuc();
fuc(1);
에러 안뜬다.
삼연산자처럼 저렇게 하면 된다.
# 화살표함수는?
const fuc = (name?: string): void => {
if (name) {
console.log(name + "님 안녕하세요.");
} else {
console.log("이름없음");
}
};
저렇게 괄호안에 매개변수넣고 타입지정하는건 똑같고 그바로옆에 리턴값 타입지정해주면 됨.
아 참고로 이거 숙제임.
# 숙제2
const marry = (
income: number,
house: boolean,
attractiveness: string
): string => {
let incomeScore = income / 10000;
let houseScore = house ? 500 : 0;
let attractScore = attractiveness == "상" ? 100 : 0;
return incomeScore + houseScore + attractScore > 600 ? "결혼가능" : undefined;
};
console.log(marry(3000000, true, "상"));
강의에선 if 문을 도배했는데 난 그냥 이렇게 썼음. 삼항연사자 못잃어..