타입이 any으로 선언을 하였어도, 코드가 작성 됨에 따라 코드의 타입이 변경된다.
즉, 코드가 작성됨에 따라서 타입이 구체화가 된다.
단, 배열을 암시적 any[]로 선언할 경우에는 배열에 값이 들어갈 때 추론이 된다.
function range(start: number, limit: number): number[] {
const out = [] // out 변수에는 암시적으로 any[] 형식이 포함됩니다.
if (start === limit) {
return out; // out 변수에는 암시적으로 any[] 형식이 포함됩니다.
}
for (let i=start; i<limit; i++) {
out.push(i);
}
return out; // out 변수에는 암시적으로 any[] 형식이 포함됩니다.
}
function makeSquares(start: number, limit: number) {
const out = []; // out 변수에는 암시적으로 any[] 형식이 포함됩니다.
range(start, limit).forEach(i => {
out.push(i * i);
});
return out; // out 변수에는 암시적으로 any[] 형식이 포함됩니다.
}
즉, 배열에 값을 넣는 경우가 있을 때는 추론이 된다.
function range(start: number, limit: number): number[] {
const out = []; // any[]
out.push(1);
if (start === limit) {
return out; // number[]
}
for (let i=start; i<limit; i++) {
out.push(i); // number[]
}
return out; // number[]
}