//number
const add = (n1: number, n2: number) => {
return n1 + n2;
};
const number1 = 5;
const number2 = 15;
const result = add(number1, number2);
console.log(result);
const add3 = (n1: number, n2: number, bool: boolean, st: string) => {
const result = n1 + n2;
if (bool) {
console.log(st + result);
//아래의 경우에는 자동으로 문자열이 나오게 됩니다
console.log(st + n1 + n2);
}
return n1 + n2;
};
const resultString = "Result is ";
add3(number1, number2, printResult, resultString);
//boolean
const add2 = (n1: number, n2: number, bool: boolean) => {
if (bool) {
console.log("bool");
}
return n1 + n2;
};
const printResult = true;
add2(number1, number2, printResult);
그런데 변수만 형성하고 진행하는 경우에도 조금 다르지만 유사한 일이 발생하게 되는데요.
let a ="hello"
a=123;
/*Type 'number' is not assignable to type 'string'. */
바로 변수를 형성하고, 다른 타입으로 대입을 다시 하게 되는 경우 위와 같은 에러를 만나게 됩니다.
분명 타입을 명시하지 않았는데도 어떻게 에러가 발생하게 된 걸 까요?
이는 타입스크립트가 변수를 선언, 초기화 하는 과정에 타입이 추론 되기 때문입니다. 이외에도 변수, 속성, 인자의 기본 값, 함수의 반환 값 등을 설정할 때 발생하게 됩니다.
이와 같은 현상을 타입 추론 이라 하며, 코드의 수를 줄이고, 가독성을 위해서 최대한 사용할 것을 추천 하고 있습니다.
let c=[1,2,3];
c.push("1");
// Argument of type 'string' is not assignable to parameter of type 'number'.
예를 들자면, 위와 같이 비어있지 않은 배열의 경우에는 이미 배열의 타입이 추론이 가능해 에러를 만나게 됩니다.
하지만 만약 배열이 비어있는 경우라면 타입을 작성해 주는 것이 용이할 것입니다.
let d:number[]=[];