본문 바로가기

전체 글111

Typescript | 타입 호환성, 대수타입 타입 호환성타입 호환성이란 예를 들어 A와 B 두개의 타입이 존재할 때 A 타입의 값을 B 타입으로 취급해도 괜찮은지 판단하는 것을 의미만약 A 타입의 값이 B 타입의 값으로 취급 되어도 괜찮다면 호환된다고 하고 안된다면 호환되지 않는다고 한다.예를 들어 다음 그림처럼 Number 타입과 Number Literal 타입이 있을 때 서브 타입인 Number Literal 타입의 값을 슈퍼 타입인 Number 타입의 값으로 취급하는 것은 가능반대로는 불가능다음과 같은 코드는 문제가 되지 않는다.let num1: number = 10;let num2: 10 = 10;num1 = num2;Number 타입의 변수 num1을 선언하고 값으로 10을 할당10(Number Literal) 타입의 변수 num2를 선언.. 2024. 10. 29.
Typescript | void, never voidvoid 타입은 아무런 값도 없음을 의미하는 타입보통은 다음과 같이 아무런 값도 반환하지 않는 함수의 반환값 타입을 정의할 때 사용function func2(): void { console.log("hello");}변수의 타입으로도 void의 타입을 지정할 수 있다.그러나 void 타입의 변수에는 undefined 외의 다른 값은 담을 수 없다.이유는 void 타입이 undefined 타입을 포함하는 타입이기 때문let a: void;a = undefined;만약 이때 tsconfig.json에 엄격한 null 검사(strictNullChecks) 옵션을 해제(False)로 설정하면 특별히 이때에는 void 타입의 변수에 null 값도 담을 수 있게 된다.// "strictNullChecks: .. 2024. 10. 25.
Typescript | Enum, any, unknown 열거형 타입 (Enum)Enum은 JS에 존재하지 않고 오직 TS에서만 사용 가능한 특별한 타입이다Enum은 다음과 같이 여러개의 값을 나열하는 용도로 사용한다.// enum 타입// 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입enum Role { ADMIN = 0, USER = 1, GUEST = 2,}const user1 = { name: "이정환", role: Role.ADMIN, //관리자};const user2 = { name: "홍길동", role: Role.USER, // 회원};const user3 = { name: "아무개", role: Role.GUEST, // 게스트};Enum을 쉽게 말하면 상수라고 볼 수 있다.enum의 값을 변수 값으로도 안전하고 .. 2024. 10. 25.
Typescript | 객체, 타입 별칭, 인덱스 시그니쳐 객체 타입을 정의하는 방법타입 스크립트에서는 2가지 방식으로 객체의 타입을 정의할 수 있다. object로 정의// user 의 타입을 객체를 의미하는 object 로 정의let user: object = { id: 1, name: "이정환",};이렇게 하면 한 가지 문제가 있다.이유는 타입스크립트의 object 타입은 단순 값이 객체임을 표현하는 것 외에는 아무런 정보도 제공하지 않는 타입이기 때문따라서 이 타입은 객체의 프로퍼티에 대한 정보를 전혀 가지고 있지 않다그렇기 때문에 이렇게 프로퍼티에 접근하려고 하면 오류가 발생이럴 땐 obejct 가 아닌 객체 리터럴 타입을 이용해야함.객체 리터럴 타입객체 리터럴은 다음과 같이 중괄호를 열고 객체가 갖는 프로퍼티를 직접 나열해 만드는 타입let use.. 2024. 10. 24.
Typescript | 배열과 튜플 배열 배열 타입 정의 방법let numArr: number[] = [1, 2, 3]변수이름: 배열타입[] 으로 배열 타입을 정의함문자열을 담는 타입을 정의한다면let strArr: string[] = ["hello", "im", "winterlood"]; Array 형태로도 배열의 타입을 정의할 수 있다. TS 에서는 꺽쇠를 사용해 타입을 작성하는 문법을 제네릭 이라고한다. let boolArr: Array = [true, false, true]; 다양한 타입 요소를 갖는 배열 타입 정의let multiArr: (number | string)[] = [1, "hello"];다양한 타입 요소를 갖는 배열 타입 정의이때 (…)[] 형식에서 소괄호는 앞서 배열 요소의 타입을 의미하고 소괄호 내부의 number.. 2024. 10. 24.
Typescript | 원시, 리터럴 타입 원시타입원시 타입은 배열이 아닌 한개의 값만 저장할 수 있는 타입들을 말함. number숫자를 의미하는 모든 값들을 의미함정수, 음수, 소수, Infinity, Nan 등 특수한 숫자도 포함// numberlet num1: number = 123;let num2: number = -123;let num3: number = 0.123;let num4: number = -0.123;let num5: number = Infinity;let num6: number = -Infinity;let num7: number = NaN;// 이렇게 선언된 num 변수는 string 타입값이 사용 불가능한 toUpperCase() 는 사용이 불가능함num1.toUpperCase(); // Errorstring문자열을 의미하.. 2024. 10. 24.