기본글이지만 혼자 정리해보려고 한다.
const num: number = 2
const num: number = "1" -> error
number(음수도 가능)
string
boolean
null (값이 없다)
보통 let age: number | null 식으로 씀
age = null;
age = 1;
undefind (값이 있는지 없는 지 결정되지 않음)
보통 let age: number | undefined 식으로 씀
function search(): number | undefined {
return undefined
}
unknown (뭐가 담길지 모름)
let a : unknown = 0;
a = 'asd';
notSure = true;
다됨 재할당도 된다.
any (다된다)
let a : any = 0;
a = 'hi';
void (x, 함수에 쓸 때 생략 가능하다, 변수 타입 되긴하나, undefined만 할당 가능해 보통 안씀)
function printf(): void {
console.log('a');
return;
}
function error(msg: string): never {
//message -> server(log)
throw new Error(msg) 혹은 while(true){}
}
function (num1: number, num2: number): number{
return num1 + num2;
}
function fetchNum(id: string): Promise<number> {
return new Promise((resolve, reject) => {
resolve(100);
});
}
Optional Parameter
function a(num1: num, num2?:num) -> ?이 optional parameter 전달해도 되고 전달 안해도 가능하다. 전달안하면 undefind가 됨
즉 num2: num | undefind 뜻 하지만 후자의 경우로 표시하고 매개변수를 안넘겨주면 오류가뜸 (undefind을 넘겨야 한다.) Optional을 쓰자!
Default Parameter
function a(num1: num = 2) ->디폴트 값
Rest Parameter
function a(...numbers: number[]): number {
return numbers.reduce((a, b) => a + b);
}
10이 return됨
console.log(a(1,2,3,4))
const nums: number[] = [1, 2, 3];
const nums: Array< number > = [1,2,3];
둘다가능
차이점 Object의 불변성 보장하게 하는 readonly사용 가능
function a (nums: readonly number[]) {}
Array< number > 는 사용할 수 없다.
튜플은 여러 타입의 데이터를 담을 수 있다.
고정된 사이즈의 여러가지 타입 있을 때 사용
인터페이스, type alias, class로 많이 대체해 사용
let a: [string, number];
a = ['a', 1]; (첫번쨰가 string이므로)
useState가 Tuple 형태다.
무언가 동적으로 return할때 많이 사용
대체 사용가능 시 대체해 많이 사용