[TS] 타입 추론
TIL
타입스크립트는 모든 변수에 일일이 타입을 정의하지 않아도 되는 편리함을 제공한다.그러나 모든 상황에서 타입을 잘 추론하는 것은 아니다.이렇게 타입 추론이 불가능한 변수에는 암묵적으로 any타입이 추론되는데, 만약 엄격한 타입 검사 모드라면 이러한 암시적 any타입의 추론을 오류로 판단하게 된다.타입 추론이 가능한 상황상황 1: 변수 선언일반적인 변수 선언의 경우 초기값을 기준으로 타입이 잘 추론된다.let a = 10;let b = "hello";let c = { id: 1, name: "devmark", profile: { nickname: "고견", }, urls: ["https://devmark.tistory.com/"],}; 상황 2: 구조 분해 할당객체와 배열을 구조 분해 할당하는..
[TS] 대수 타입
TIL
대수 타입이란 여러개의 타입을 합성해서 만드는 타입을 말한다.합집합 (Union) 타입let a:" string | number | boolean;a = 1;a = "hello";a = true;유니온 타입으로 배열 타입 정의하기let arr: (number | string | boolean)[] = [1, "hello", true];유니온 타입과 객체 타입type Dog = { name: string; color: string;};type Person = { name: string; language: string;};type Union1 = Dog | Person;let union1: Union1 = { // ✅ name: "", color: "",};let union2: Union1 = {..
[TS] void와 never
TIL
void 타입아무런 값도 없음을 의미하는 타입이다. 보통은 아무런 값도 반환하지 않는 함수의 반환값 타입을 정의할 때 사용한다.// 아무런 값도 반환하지 않는 void 타입function func1(): void { console.log("hello");}// func2의 함수의 반환값은 string 타입function func2(): string { return "hello";} void 타입에는 오직 undefined만 할당할 수 있다. never 타입불가능을 의미하는 타입이다. 보통 함수가 어떠한 값도 반환할 수 없는 상황일 때 해당 함수의 반환값 타입을 정의하는 데 사용된다.never 타입을 사용하는 경우1. 무한 루프function func3(): never { while (true) {}..
[TS] any와 unknown
TIL
any 타입타입스크립트에서만 제공되는 특별한 타입으로 타입 검사를 받지 않는다. 다음과 같이 변수 anyVar를 number 타입의 값 10으로 초기화 한 후, string 타입의 값 "hello"를 저장하면 오류가 발생한다.타입스크립트에서는 변수를 초기화할 때 초기화하는 값을 기준으로 변수의 타입을 추론하기 때문이다. 이 경우 any타입을 명시해주면 어떤 타입의 값이든 자유롭게 할당할 수 있다.let anyVar: any = 10;anyVar = "hello"; // ✅ 정상anyVar = true; // ✅ 정상anyVar = {}; // ✅ 정상anyVar = () => {}; // ✅ 정상anyVar.toUpperCase(); // ✅ 컴..
[TS] 타입 정의 연습
TIL
1. 조건을 만족하는 타입 정의- Nums : 숫자만 담을 수 있는 배열 타입- Colors : 문자열만 담을 수 있는 배열 타입- Coords : [숫자, 숫자] 형태의 배열만 허용하는 타입- Info : [숫자, 문자열] 형태의 배열만 허용하는 타입type Nums = number[];type Colors = string[];type Coords = [number, number];type Info = [number, string]; 2. Course 타입 구현온라인 강의 정보를 포함하는 객체 타입 Course는 다음의 프로퍼티를 가진다.- 문자열을 저장하는 name 프로퍼티- 숫자를 저장하는 price 프로퍼티- 숫자를 저장하는 student_cnt 프로퍼티- 문자열을 저장하는 author 프로퍼티-..
[TS] 열거형 타입
TIL
열거형 타입 (Enum)타입스크립트에서만 사용할 수 있는 특별한 타입으로, 여러개의 값을 나열하는 용도로 사용한다.숫자 열거형 타입enum Role { ADMIN = 0, USER = 1, GUEST = 2,}const user1 = { name: "woodstock", role: Role.ADMIN, // 관리자};const user2 = { name: "snoopy", role: Role.GUEST, // 일반 유저};const user3 = { name: "jerry", role: Role.USER, // 게스트}; 다음과 같이 숫자값을 직접 할당하지 않으면 0부터 1씩 늘어나는 값으로 자동할당이 되는데,enum Role { ADMIN, // 0 할당(자동) USER, // 1..
[TS] 타입 별칭과 인덱스 시그니처
TIL
타입 별칭 (Type Alias)타입 별칭을 이용하면 다음과 같이 변수를 선언하듯 타입을 별도로 정의할 수 있다.type User = { id: number; name: string; nickname: string; mbti: string;}let user1: User = { id: 1, name: "유재석", nickname: "메뚜기", mbti: "ISFP",};let user2: User = { id: 1, name: "박명수", nickname: "벼멸구", mbti: "ISTP",}; 인덱스 시그니처 (Index Signature)객체 타입을 유연하게 정의할 수 있도록 돕는 특수한 문법이다.type CountryCodes = { [key: string]: string;}..
[TS] 객체 타입
TIL
객체 (Object)객체 타입을 정의하는 방법Object로 정의let user: object = { id: 1, name: 'woodstock',};타입스크립트의 object 타입은 단순히 값이 객체임을 표현하는 것 외에는 아무런 정보도 제공하지 않는다.따라서 다음과 같이 프로퍼티에 접근하려고 하면 오류가 발생한다.이와 같은 문제를 해결하려면 객체 리터럴 타입을 이용해야 한다. 객체 리터럴 타입중괄호를 열고 객체가 가지는 프로퍼티를 직접 나열해 만드는 타입이다.💭 리터럴 타입이란?let user: { id: number; name: string;} = { id: 1, namd: 'woodstock',};타입스크립트는 C나 Java와 달리 구조적 타입 시스템(S..
[TS] 배열과 튜플
TIL
배열 (Arrays)배열은 자바스크립트의 배열과 크게 다르지 않다.배열 타입 정의 방법let numArr: number[] = [1,2,3];let strArr: string[] = ["hello", "im", "고견"];Array 형태로도 정의할 수 있다. (제네릭 방식)let boolArr: Array = [true, false, true]; 다양한 타입 요소를 갖는 배열 타입 정의|를 이용하면 여러 타입 중 하나를 만족하는 타입을 정의할 수 있는데, 이러한 문법을 유니온(Union) 타입이라고 한다.let multiArr: (number | string)[] = [1, "hello"]; 다차원 배열 타입 정의다음과 같이 []를 연달아 작성해 다차원 배열 타입도 정의할 수 있다.let doubleAr..
[TS] 원시타입과 리터럴 타입
TIL
기본 타입 (Basic Types)타입스크립트에서의 기본 타입이란, 타입스크립트가 자체적으로 제공하는 내장 타입을 말한다.기본 타입들은 서로 부모 자식 관계를 이루며 계층을 형성한다.기본 타입은 크게 원시 타입과 리터럴 타입으로 나눌 수 있다.원시 타입 (Primitive Type)여러 타입들 중 가장 기본이 되는 타입이다.배열이나 객체 같이 동시에 여러개의 값들을 저장할 수 있는 비원시 타입과 달리, 원시 타입은 숫자면 숫자, 문자열이면 문자열 이렇게 딱 하나의 값만 저장할 수 있다.number 타입자바스크립트에서 숫자를 의미하는 모든 값을 포함하는 타입이다.단순 정수 뿐만 아니라 소수, 음수, Infinity, NaN 등의 특수한 숫자들도 포함한다.let num1: number = 123;let nu..