본문 바로가기

WEB/TypeScript

[TS] 기본 타입 및 타입 추론

기존에 자바스크립트에서 지원하는 Number, String, Boolean, Array 타입들은 모두 지원한다.

이외에도 추가적으로 지원하는 것이 있다.

 

let num: number = 1;
let str: string = "Hello";
let bool: boolean = true;

let arr: string[] = ["a", "b"];
let arr2: array<string> = ["a", "b"];

 

Number 자바스크립트의 Number와 동일하다 int, double 구분없이 모두 실수로 표현한다.
String 자바스크립트의 String과 동일하다. " ", ' '. ` `(백틱)으로 문자열을 감싸면 된다.
Boolean 자바스크립트의 Boolean과 동일하다.
Array Array에 사용법은 두가지가 있는데 제네릭을 선언하는 방법이 있다.
열을 선언할땐 Type[] 으로 선언한다.
제네릭 배열을 선언할땐 Array<elemType> 선언하다

 

이외에도 추가타입이 있다.

튜플(Tuple), 열거 (Enum), Any, Null, Object이 있다.

 

튜플(Tuble)

let tup: [string, number] = ["Hello", 1]; // O
let tup3 : [string, number] = [1, "Hello"] // X
let tup2 : [string, number] = [1, false]; // X

 

자료형을 두개 이상에 타입들을 []에 넣은 뒤 해당 자리에 맞는 값들을 대입해준다.

열거(Enum)

eunm Color {Red, Green, Blue}
let green: Color = Color.Green; // 1;

 

enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];

console.log(colorName); // 값이 2인 'Green'이 출력됩니다.

 

서로 성격이 비슷한 상수들을 모아놓는 타입이다.

각 자리수에 맞는 number 값을 가지며 []호출하면 해당 문자열이 출력된다.

Any

let notSure: any = 4;
notSure.ifItExists(); // 성공, ifItExists 는 런타임엔 존재할 것입니다.
notSure.toFixed(); // 성공, toFixed는 존재합니다. (하지만 컴파일러는 검사하지 않음)

let prettySure: Object = 4;
prettySure.toFixed(); // 오류: 프로퍼티 'toFixed'는 'Object'에 존재하지 않습니다.

보통에 경우 타입이 모를때 사용된다. 어떠한 타입도 존재할 수 있다.

any는 기존 타입선언이라는 개념이 없는 자바스크립에서 사용되던 것이다.

any로 타입을 선언하면 타입 검사를 하지않고 컴파일 또한 하지않는다.

당연하게도 타입을 모르기 때문에 자동완성 기능이 동작하지 않는다.

Void

function warnUser(): void {
    console.log("This is my warning message");
}

 

어떠한 타입도 존재할 수 없다. any와 반대되는 타입이다.

반환되는 값이 없는 함수를 만들때 사용된다.

Null and Undefined

타입스크립트에서는 undefined와 null을 타입으로 선언하는 것이 가능하다.

또한 모든 타입에 하위타입이기 때문에 모든 타입을 할당할 수 있다.

Void와 같이 유용하게 쓰이진 않는다.

Object

declare function create(o: object | null): void;

create({ prop: 0 }); // 성공
create(null); // 성공

create(42); // 오류
create("string"); // 오류
create(false); // 오류
create(undefined); // 오류

 

기본 원시타입이 아닌 경우 선언한다.

객체인 Object가 아니다.

타입 추론

타입스크립트에서 타입을 따로 선언하지 않고 할당하면 그 과정에서 타입이 동적으로 정해지게 되는데

이를 타입 추론이라고 한다.

 

let foo; // let foo: any와 동치

foo = 'Hello';
console.log(typeof foo); // string

foo = true;
console.log(typeof foo); // boolea

 

타입 추론으로 인해서 타입스크립트로 코딩을 하게되면 불필요하게 모든 변수나 함수에 타입을 선언할 필요는 없다.

에디터가 발달된 요즘에는 더더욱 일일이 선언해둘 필요가 없고,

타입이 명확하지 않으면 타입 검사기에서 오류를 출력하고 해당 부분만 타입을 명시 해주면 된다.

'WEB > TypeScript' 카테고리의 다른 글

[TS] Interface란 무엇인가?  (0) 2021.07.22
[TS] TypeScript는 무엇인가?  (0) 2021.06.22