본문 바로가기

Study/TypeScript

[TypeScript] 기본타입 지정하기

#1. 타입 지정하기 

1. 일반적으로

let 문자 :string = '문자';
let 숫자 :number = 123;
let 불리언 :boolean = false;
let 널 :null = null;
let 언디파인드 :undefined = undefined;

// 여러개의 타입이 들어간다면 | 사용 - Union Type 
let 문자또는숫자 :string|number = '문자또는숫자'
let 문자또는숫자 :(string|number) = '문자또는숫자'

 

2. array 일때 :어레이안의타입[]

let 문자로구성된어레이 :string[] = ['문자1','문자2'];
let 숫자로구성된어레이 :number[] = ['문자1','문자2'];
// 불리언이나, 널, 언디파인드도 같음.

// 여러개의 타입이 들어간다면 | 사용 - Union Type 
let 숫자나문자 :(string|number)[] = ['문자1', 123 ];

 

3. object 일때 :{키 : 타입}

// let 오브젝트 :{키: 타입} = { 키: 값};
let 오브젝트 :{name :string} = { name: '장금이'};

// age는 들어갈수도 있고 안들어갈수도 있는 오브젝트라면?
let 오브젝트2 :{name :string, age ?:number} = { name: '장금이'};

 

 

4. 함수

// function 함수(x: 파라미터타입): 리턴값타입 {
function 함수(x: number): number {
	return x * 2;
}
함수(2);


// 리턴값 명시적으로 막고싶다면 void
function 함수2(x: number): void {
	x + 1;
}
함수2(2);


// 파라미터가 옵션이라면 ?: x타입
// 중요한건 ?: number 은 number | undefined라는 말 -> 그래서 이경우 타입 에러 날거임
// x는 number일수도, undefined일수도 있는 타입이라.
// 그래서 x를 number로 확실히 해야함.
function 함수3(x?: number): void {
	x + 1;
}
함수3(1);

// narrowing
function 함수4(x?: number): void {
	if(typeof x = number){
    	x + 1;
    }   
}
함수4(1);

 

 

#2. any , unknown

- 타입을 사용하고 싶지 않을때 any나 unknown을 사용하면 된다.

- 하지만 타입스크립트에서 타입을 안쓸거면 타입스크립트 왜써..

let 이름: any; // 타입 실드 해체 문법, 일반 js변수로 만들고 싶으면 쓰셈
이름 = [];
이름 = 123;

let 이름2: unknown; // any와 비슷한데 더 안전하다
이름2 = 132;

// 둘이 뭐가 다르냐면 
// any는 정말 자스처럼
// unkown은 unkonwn 타입이 되는거다. 

이름 - 1; // any타입 - 지금 숫자 대입되어있으면 연산된다
이름2 - 1; 
// unknown : type이 다르면 연산도 불가. 숫자 대입해도 얘 타입은 unknown이어서 연산 불가