1. unknown 타입 (전체 집합)unknown 타입은 타입 계층도의 최 상단에 위치합니다. 따라서 unknown 타입 변수에는 모든 타입의 값을 할당할 수 있습니다. 바꿔 말하면 모든 타입은 unknown 타입으로 업 캐스트 할 수 있습니다. let a: unknown = 1; // number -> unknownlet b: unknown = "hello"; // string -> unknownlet c: unknown = true; // boolean -> unknownlet d: unknown = null; // null -> unknownlet e: unknown = undefined; ..
1. voidvoid 타입은 아무런 값도 없음을 의미하는 타입입니다.보통은 다음과 같이 아무런 값도 반환하지 않는 함수의 반환값 타입을 정의할 때 사용합니다.function func2(): void { console.log("hello");} 물론 다음과 같이 변수의 타입으로도 당연히 void 타입을 지정할 수 있습니다. 그러나 void 타입의 변수에는 undefiend 이외의 다른 타입의 값은 담을 수 없습니다. 그 이유는 void 타입이 undefiend 타입을 포함하는 타입이기 때문입니다.let a: void;a = undefined; 그런데 만약 이때 tsconfig.json에 엄격한 null 검사(strictNullChecks) 옵션을 해제(False)로 설정하면 특별히 이때에는 void 타입..
1. any 타입any 타입은 타입스크립트에서만 제공되는 특별한 타입으로 타입 검사를 받지 않는 특수한 치트키 타입입니다.예를 들어 다음과 같이 아주 범용적으로 사용되어야 하는 변수가 하나 있다고 가정합니다.let anyVar = 10;anyVar = "hello"; // 오류 발생!변수 anyVar는 number 타입의 값 10으로 초기화 했지만 이후에 또 string 타입의 값 “hello”를 저장해야 한다고 가정하겠습니다.타입스크립트에서는 변수의 타입이 변수를 초기화할 때 초기화 하는 값을 기준으로 추론하기 때문에 이렇게 하면 오류가 발생합니다.따라서 이럴 때에는 다음과 같이 any 라는 치트키 타입을 이용하면 됩니다.let anyVar: any = 10;anyVar = "hello";anyVar ..
열거형(Enum) 타입열거형 타입은 자바스크립트에는 존재하지 않고 오직 타입스크립트에서만 사용할 수 있는 특별한 타입입니다.열거형은 다음과 같이 여러개의 값을 나열하는 용도로 사용합니다.enum Role { ADMIN, USER, GUEST,}3개의 멤버 ADMIN, USER, GUEST를 나열한 열거형 타입을 하나 만들었습니다. 설명 편의상 앞으로 열거형 타입을 enum이라 통칭합니다.enum의 각 멤버에는 다음과 같이 숫자를 할당할 수 있습니다.enum Role { ADMIN = 0, USER = 1, GUEST = 2,} 또 다음과 같이 enum의 멤버들을 값으로도 활용 할 수 있습니다.// enum 타입// 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입enum Role {..
타입 별칭(Type Alias)타입 별칭을 이용하면 다음과 같이 변수를 선언하듯 타입을 별도로 정의할 수 있습니다// 타입 별칭type User = { id: number; name: string; nickname: string; birth: string; bio: string; location: string;};... type 타입_이름 = 타입 형태로 타입을 정의합니다. 위 코드는 타입 이름으로는 User 그리고 타입으로는 여러개의 프로퍼티가 있는 객체 타입을 정의했습니다. 이렇게 만든 타입 별칭은 다음과 같이 변수의 타입을 정의할 때 타입 주석과 함께 이용할 수 있습니다.type User = { id: number; name: string; nickname: string; bir..
1. 객체 타입을 정의하는 방법타입스크립트에서는 2가지 방식으로 객체의 타입을 정의할 수 있습니다.object로 정의하기객체 타입을 정의하기에 앞서 먼저 간단한 객체를 하나 만듭니다.let user = { id: 1, name: "이정환",}; 다음으로 user의 타입을 객체를 의미하는 object로 정의합니다.let user: object = { id: 1, name: "이정환",}; 타입이 잘 정의되었습니다. 그런데 이렇게 타입을 정의하면 한가지 문제가 발생합니다.let user: object = { id: 1, name: "이정환",};user.id;위 코드의 user.id 처럼 점 표기법으로 객체의 특정 프로퍼티에 접근하려고 하면 오류가 발생합니다.오류 메세지를 확인해보면 다음과 같이 ..
배열배열 타입 정의 방법타입스크립트에서는 다음과 같이 배열 타입을 정의합니다.let numArr: number[] = [1, 2, 3]배열을 저장하는 변수의 이름 뒤에 타입 주석의 시작을 의미하는 콜론(:)을 작성한 다음 배열요소타입[] 형식으로 배열 타입을 정의합니다.만약 문자열을 담는 배열의 타입을 정의한다면 다음과 같이 하면 됩니다.let strArr: string[] = ["hello", "im", "winterlood"];배열 요소의 타입이 string이므로 이번에는 string[] 으로 문자열 배열 타입을 정의 했습니다.또는 다음과 같은 형식으로도 배열의 타입을 정의할 수 있습니다.let boolArr: Array = [true, false, true];Array 형태로도 배열의 타입을 정의할..
기본 타입(Basic Types) 이란?기본 타입이란 타입스크립트가 자체적으로 제공하는 타입들을 말합니다. 기본 타입을 다른 말로는 내장 타입이라고도 할 수 있습니다. 다음 그림은 타입스크립트가 제공하는 기본 타입들을 계층에 따라 분류한 ‘타입 계층도’ 그립입니다. 그림을 자세히 보면 null이나 undefiend 그리고 number나 string 처럼 우리가 흔히 알고 있는 타입들도 존재하고 그 외의 any나 void, never 같은 우리가 처음 보는 타입들도 존재합니다.이렇게 타입스크립트에는 꽤 많은 기본타입들이 제공됩니다. 그리고 이런 각각의 기본 타입들은 서로 부모 자식 관계를 이루며 계층을 형성합니다.원시타입원시 타입(Primitive Type)은 동시에 한개의 값만 저장할 수 있는 타입들을 ..