타입스크립트를 제대로 사용하기 위해서는, 타입을 최대한 명확하게 명시함으로써 타입이 좀 더 보장이 되는 프로그래밍을 해야합니다. 그러기 위해서는 변수, 클래스, 함수에 어떤 타입의 데이터를 담을 것인지, 전달 할 것인지, 받아올 것인지 세부적으로 작성해야 할 필요가 있습니다.
타입스크립트의 기본 타입(primitive)에는 number, string, boolean, null, undefined, bigint, symbol
가 있습니다.
number는 숫자 타입입니다.
const num:number = 2;
string은 문자 타입입니다.
const str:string = 'hello';
boolean은 true/false를 나타내는 타입입니다.
const boal:boolean = true;
undefined는 값이 있는지 없는지 아무것도 결정되지 않은 상태를 나타내는 타입입니다. undefined 타입 자체로 변수를 선언하는 경우는 거의 없습니다. 값이 아직 결정되지 않을 수 있는 경우, optional하게 명시할 수 있습니다.
let age: number | undefined;
age = undefined;
age = 20;
null은 값이 없음을 명확하게 나타내주는 타입입니다. 값이 있을수도 없을수도 있을 때, optional하게 명시할 수 있습니다.
let name: string | null;
name = '홍길동';
name = null;
unknown은 어떤 타입의 데이터가 담길지 알 수 없음을 나타내는 타입입니다. 따라서 다양한 타입을 전부 할당할 수 있습니다. 타입의 애매함으로 잘 사용하지 않지만, 타입이 없는 자바스크립트와의 연동해서 쓰기위해 필요한 타입입니다.
let curious: unknown;
curious = '홍길동';
curious = 20;
curious = true;
curious = undefined;
curious = null;
any는 어떤 타입이든 담을 수 있는 타입입니다. 타입의 애매함으로 가급적 사용하지 않는게 좋습니다.
let anything: any;
anything = '홍길동';
anything = 20;
anything = true;
anything = undefined;
anything = null;
void는 아무것도 없음을 나타내는 타입입니다. 변수보다는 함수의 결과값이 아무것도 없을 때 주로 사용됩니다.
function print(): void {
console.log('hello');
}
never는 함수의 결과값이 절대 리턴되지 않을 때를 명확하게 명시하기 위해 사용됩니다.
function throwError(): never {
throw new Error("error");
}
object는 원시 타입을 제외한 모든 object 타입의 데이터를 받을 수 있습니다. 그만큼 데이터가 광범위하게 받아지기 때문에 잘 사용하지 않는게 좋습니다.
let obj: object;
function getObject(obj: object){
...
}
getObject({name: '홍길동'});
getObject({age: 20});
getObject([1,2,3]);