● 함수타입
함수타입이란 함수의 매개변수와 반환하는 변수의 타입을 정의내리는 것을 이야기한다.
예를 들어, 하나의 변수가 함수라고 지정하고 싶다면 아래와 같이 설정할 수 있다.
let anything: Function;
만약 함수의 매개변수의 개수와 타입을 지정하고 싶다면? 아래와 같이 정의내릴 수 있다.
let anything : (a:number, b:number )=> number
위의 정의는 2개의 매개변수를 받는데, 2개의 매개변수 모두 숫자를 받고 반환값으로 number라는 타입을 반환한다.
● void타입
function daeun(num1:number, num2:number):void {
console.log('안냐쌔염');
}
위와 같이 반환값을 void라고 설정하면, 이 함수는 어떤값도 반환하지 않는다는 것으로 인식시킬 수 있다.
하지만 아래와 같이 return 값을 넣어주게 된다면 에러가 뜨게 된다.
function daeun(num1:number, num2:number):void{
return 'daeun'
}
또한 함수를 호출할 때, 하나의 매개변수를 더 추가해서 호출한다면 오류가 뜨게 된다.
즉, 타입스크립트에서 매개변수의 타입 정의를 잘해두어야 함수의 반환값도 타입스크립트가 추론할 수 있기 때문에, 매개변수를 잘 적는 것이 중요하다.
● unknown 타입
unknown의 타입은 any보다는 제한적인 타입이다. any타입은 그냥 자바스크립트로 코드를 짜는 것과는 다름이 없지만 unknown 타입 같은 경우 any보다는 안정성이 있다.
let userInput: unknown;
userInput = 5;
userInput = "Daeun";
타입을 unknown으로 해두고, 다양한 타입들로 수정할 수 있다.
하지만 unknown을 설정해놓은 타입에, 다른 타입을 설정해놓고 같다고 설정같은건 할 수 없다!
let userInput: unknown;
userInput = 5;
userInput = "Daeun";
let userName: string;
userInput = userName; // 에러뜸
하지만 userName에 변수 할당하고 난 다음은 가능함.
let userInput: unknown;
userInput = 5;
userInput = "Daeun";
let userName: string;
userName = "daeun";
userInput = userName; // 가능해짐