TypeScript

TypeScript 기본 타입

honey.kikiki 2021. 10. 13. 21:35
728x90

타입스크립트 기본 타입

## 타입스크립트 기본 타입

 

 1.기본타입

 

타입스크립트는 다양한 기본 타입을 제공합니다.
Boolean, Number, String, Object, Array, Tuple, Enum, Any, Void, Null, Undefined, Never

 

• 변수에 타입 설정

let num: number = 0;

let str: string = String(num);

 

 

 2.배열

• Tuple: 배열의 타입 순서와 배열 길이를 지정할 수 있는 타입입니다.

let arr1: number[] = [1, 2, 3]; // 보편적으로 사용

let arr2: Array<number> = [1, 2, 3];

let arr3: (string | number | boolean)[] = [true, 2, "3"];```

배열안에 어떤 값이 들어오는지 여러가지 선택할수있다.

let arr4: [boolean, number, string] = [true, 2, "3"]; // tuple

arr4[2] = "3"; // 가능

arr4[2] = 3; // 타입 오류

arr4[3] = 1; // 배열의 수가 정해져 있어서 타입 오류가 작동한다.

arr4.push(2); // 단 tuple에 push 하는 행위는 막지 못한다.

console.log(arr4); // (5) [true, 2, 3, 1, 2]

 

 

한가지의 값만 들어오지 않을떄 배열에 정해진 위치에 고정된 값이 들어오게 정해준다 배열의 수고 정해져있다

 

let arr5: [boolean, 2, string] = [true, 2, "3"]; // 더 엄격하게 배열 위치에 값을 고정도 가능

arr5[1] = "s"; // 타입오류

arr5[1] = 3; // 타입오류

 

 

정해진 값으로 숫자 2 밖에 들어가지 못한다

 

3. 상수

 

상수를 만들고 싶을떄 **as const** 를 사용한다

 

let arr6 = [true, 2, "3"] as const;

arr6[0] = false; // 타입오류

const obj1 = { a: "b" } as const;

obj1.a = "c"; // as const 를 쓰면 타입 오류가 뜬다

const obj2: object = { a: "b" } as const; // 사용하지않는다

const obj3: { a: string; b: number } = { a: "b", b: 3 } as const;

const obj4: { a: string; b?: number } = { a: "b" } as const; // b가 나중에 생기는 경우 ? 옵셔널 체이닝을 사용한다

 

 

4. enum

enum Color {
Red,
Green,
Blue,
}

let c: Color = Color.Green;

Color[0] === "Red";

Color["Red"] === 0;

 

 

5. 함수

void : 변수에는 undefined와 null만 할당하고 함수에는 리턴 값을 설정할 수 없는 타입입니다.

function add(a: number, b: number): number {
	return a + b;
}



function add2(a: number, b: number): void {
	console.log(a, b);
} // void는 함수에 return을 넣어주지 않았을떄 리턴 값이다.



function add3(a: number, b: number): (c: string) => number {
	return (c: string) => {
		return 3;
	};
}

function add4(a: number, b: number): (c: string) => (d: string) => boolean {	
	return (c: string) => {	
		return (d: string) => {
			return false;
		};	
	};
}

 

 

인자에 들어오는 값 과 리턴값의 타입을 정해준다.

return 값이 들어가지 않을떄는 void를 넣어준다

 

6. 객체타입

 

 

const obj5: { a: (b: number, c?: string) => string } = {
	a(b: number, c?: string) {
		return "hello";
	},
};



obj5.a(); //타입오류 b자리에 값이 들어가지 않아서
obj5.a(3);
obj5.a(3, "hello");

 

 

각 객체의 값을 지정해주고

정해지지 않은 값은 옵셔널 체이닝으로 보호해준다

 

7. naver

특정 값이 절대 발생할 수 없을 때 사용합니다.

const arr7: [] = [];

arr7.push(3); // 타입을 잘못만든경우 push할떄 에러가 뜬다.

 

naver 대부분 배열을 잘못만든경우이다.

 

8. any

모든 데이터 타입을 허용합니다.

const hi: any = [true, 2, "as"];

 

 

9. 타입 캐스팅

const div = document.createElement("div");

const a = div as HTMLElement; // 상속관계의 타입으로는 변경 가능

const b = div as number; // 완전히 다른 타입은 불가능

const d = div as unknown as number; // as unknown을 쓰면 가능



const hello2: number;

(hello2 as unknown as string).substr(1, 2); // 어쩔수 없을떄 강제로 다른 타입을 바꾸는 방법

(<string>(<unknown>hello2)).substr(1, 2); // 어쩔수 없을떄 강제로 다른 타입을 바꾸는 방법