1. 함수


함수의 파라미터를 정의할 때 각 파라미터의 타입을 지정하지 않으면 any 타입의 파라미터가 지정 됨

함수의 반환값에 대한 타입은 return 실행문에 따라 타입추론(Type Inference)이 적용 됨

파라미터에 타입을 지정하지 않으면 일반 변수와 마찬가지로 암묵적인 any타입의 적용으로 경고 사항

반환값의 경우 return 구문으로 명시적인 타입의 유추가 가능

const findArea = function (width : number , heigth : number): number{
  return width = heigth;
}

// const findArea = (width : number , height : number) : number => {
//  return width = heigth;
// }

console.log(findArea(10,20)); // 200

함수의 반환값이 없을 경우 void 타입의 반환을 정의

함수의 반환값으로 정의 가능한 never 타입은 절대 발생하지 않는 값의 타입

void 타입은 변수로 사용될 경우 undefined,null 값만 대입(assign) 가능

never타입은 어떤 타입의 변수에도 대입 될 수 있지만 never타입에는 어떤 타입의 값도 대입될 수 없음

let accountBalance : number = 10000;

function overdraftError(message?: string): never {
  throw Error(message);
}

function withdraw(balance: number): number {
  if(accountBalance < balance){
    overdraftError("잔액이 부족함")
  }
  return accountBalance - balance;
}

console.log(withdraw(3000)); // 7000
console.log(withdraw(15000)); // Error: 잔액이 부족함

2. 배열


배열도 일반 변수와 마찬가지의 타입 시스템이 적용되며 타입의 명시적 지정과 초기화를 통한 타입 지정이 가능함

타입을 명시적 혹은 묵시적으로 지정하지 않을 경우 해당 배열 참조 변수는 any타입의 변수로 지정됨