특정 변수의 타입을 확실히 모를 때 사용한다.
초기값으로 10을 넣으면 타입스크립트는 해당 변수를 숫자타입으로 추론하지만, any타입으로 지정해주었기 때문에 문자열이나 다른값을 넣어도 에러가 나지 않는다.
let anyVar:any = 10;
anyVar = 'hello'
anyVar = true;
anyVar = () => {};
any타입은 컴파일시 런타입에러가 발생한다. 타입검사를 안하는것과 마찬가지이기 때문에 사용을 지양하자.
// 마지막으로 넣는 값이 함수이기 때문에 에러가 나는거지 타입에러가 나진 않는다.
anyVar.toUpperCase();
특정 타입으로 선언한 변수에도 any타입을 넣을 수 있다.
let num:number = 10;
// 마지막으로 함수를 넣었는데... 숫자타입으로 선언한 num변수에 anyVar를 넣어도 에러가 안난다.
num = anyVar
any 타입과 비슷하지만 다른 변수에 unknown타입으로 선언한 변수를 넣을 수 없다.
let unknownVar: unknown;
unknownVar = '';
unknownVar = 1;
unknownVar = ()=>{};
let num: number = 10;
num = unknownVar;
연산도 불가능하다
// +,*,/,- 같은 연산도 안된다.
unknownVar.toUpperCase();
typeof 연산자로 타입을 명확하게 밝혀줬을때는 사용가능
if (typeof unknownVar === 'number'){
num = unknownVar
}
void 타입은 아무것도 없음을 의미한다.
// 함수의 반환값에도 타입을 지정할 수 있다.
// func1의 반환값은 문자열
function func1(): string {
return "hello"
}
**// 리턴값이 없는 함수에는 void를 지정할 수 있다.
function func2(): void {
console.log('hello');
}**
void 타입에는 undefind만 담을 수 있다.
let a:void;
a = 1;
a ='hi';
a = {};
a = undefined
// strictNullChecks 옵션을 false로 지정해주면 null도 가능
a = null;