1. boolean
- true / false 를 나타낸다.
- 주로 조건문, 비교 연산 등에서 사용된다.
2. number
- 다른 프로그래밍 언어와 다르게 모든 숫자 타입을 number로 나타낸다.
3. string
- 텍스트 데이터를 나타낸다.
4. array
- 값을 배열의 형태로 나타낸다.
- 나타내는 방법에는 2가지가 있으며 배열 요소들을 나타내는 타입 뒤에 [] 를 사용하는 방법과 제네릭 배열 타입이 있다.
let numArr: number[] = [1, 2, 3];
let numArr: Array<number> = [1, 2, 3];
5. tuple
- 배열과 비슷하지만, 고정된 타입과 고정된 수를 가진다. (배열은 한가지 타입만 가질 수 있다)
- 선언된 순서에 맞는 타입을 가진 데이터를 넣지 않으면 에러가 난다.
- tuple은 아래와 같이 2개만 넣어야 하는경우 배열 자체를 할당하면 2개만 넣으라는 에러를 발생시키지만, push 를 통해 데이터를 추가할 경우 에러를 발생시키지 않는다. 이 점을 기억하고 있어야한다.
let x: [number, string];
x = [33, 'jin']; //ok
x = ['jin', 33]; //error
x = [33, 'jin', 344]; //error - Type '[number, string, string]' is not assignable to type '[number, string]'. Source has 3 element(s) but target allows only 2.
x.push(54); //ok - 고정된 길이 및 타입을 가진 튜플인데 push로 추가할 경우 에러를 발생시키지 않음... 주의!
6. enum
- 상수와 같은 데이터 집합을 이해하기 쉬운 이름으로 지정할 수 있는 타입이다.
- enum 안에 있는 요소들의 값이 설정되지 않을 경우 0부터 시작한다.
- enum 안의 요소는 number 와 string 타입만 가질 수 있다.
enum Size {
small = 'S',
midium = 'M',
large = 'L'
}
let s: string = Size.large; //L
7. any
- 모든 타입의 슈퍼 타입이며, 어떤 타입의 값이든 저장할 수 있는 타입이다.
- 어떠한 타입으로 사용될지 알 수 없을 때 any를 사용한다.
- any는 최대한 사용하지 않는게 좋다.
8. unknown
- any 타입처럼 모든 타입의 값을 저장할 수 있다는 점이 같지만, unknown은 변수에 값을 할당할 때 어떤 타입으로 할당할 것인지에 대해 as를 사용하여 타입을 지정해야한다.
- any 보다는 unknown 을 쓰는게 좋지만 unknown도 재할당이 이루어져야 타입 체크를 하므로 안전성이 보장되지 않는다.
let value: unknown = 'text!';
let text: string;
text = value as string; //타입 명시!
9. union
- | 연산자를 사용하여 여러가지 타입을 지정할 수 있다.
function showText(text: string | number) : string | number{
return text;
}
10. literal
- union type(|) 과 같이 사용하면 유용하다.
- 타입을 원하는 명칭으로 지정하여 사용할 수 있다.
const add = (input1: number | string, input2: number | string, resultType: "number" | "type") => {
let result;
if ((typeof input1 === "number" && typeof input2 === "number") || resultType === "number") {
return (result = +input1 + +input2);
} else {
return (result = input1.toString() + input2.toString());
}
};
console.log(add("3", "4", "number")); //리터럴 타입을 사용함.
문자 2개를 넣고 숫자로 더하는 로직으로 갈 수 있도록 마지막 매개변수에 number 타입을 넣었다.
'typescript' 카테고리의 다른 글
[typescript] 교차 타입 Intersection Type (0) | 2024.04.01 |
---|---|
유틸리티 타입 (0) | 2024.03.05 |