저장을 습관화
타입스크립트에서의 데이터 타입 사용 방법 2 - any, unknown, union, object literal 본문
타입스크립트에서의 데이터 타입 사용 방법 2 - any, unknown, union, object literal
ctrs 2023. 7. 29. 12:39가변적인 타입의 데이터를 저장해야할 때
1. any
string, number, boolean, tuple, enum.. 모든 타입의 최상위 타입
어떤 타입의 값이든 저장할 수 있어 어떠한 타입이 와야할지 판단하기 어려운 경우 사용
자바스크립트의 object 타입과 같은 역할
사용 예시
언뜻 편리해보일 수도 있으나
사람들이 타입스크립트를 사용하는 가장 큰 이유인 '타입 안정성 확보'가 희미해지게 된다.
코드의 안정상과 유지 보수성을 낮출 수 있으므로, 가급적이면 사용하지 않도록 하자.
2. unknown
any 타입과 비슷하게 모든 타입의 값을 저장할 수 있으며
그 값을 다른 타입의 변수에 할당하려면 명시적으로 타입을 확인하여 더 안전하다.
사용 예시
위와 같이 stringValue = unknownValue as string 이라고 선언하는 것을
Type Assertion(타입 단언)이라고 한다.
단언을 해주는 것이 더 명시적일 뿐 필수는 아니다.
아래와 같이 사용하기도 한다.
let unknownValue: unknown = "문자열입니다.";
let stringValue: string;
if (typeof unknownValue === "string") {
stringValue = unknownValue;
console.log("unknownValue는 문자열입니다.");
} else {
console.log("unknownValue는 문자열이 아닙니다.");
}
3. union
unknown은 재할당 시 타입 체크의 방법으로 any보다 안전함을 보장하지만
반대로 말하면 재할당이 없으면 안전성을 보장할 방법이 없다.
이럴 때 사용하는 것이 union 타입이며
여러 타입을 가질수 있는 변수를 선언할 때 사용하며
각 타입을 | 연산자를 구분해 나열한다.
사용 예시
타입스크립트를 쓰면서 여러 타입을 하나의 변수로 해결하겠다는 생각은 하지 말자
4. object literal(객체 리터럴)
아래와 같이 JSON 형태로 표현한다.
const obj = {
a: [1, 2, 3],
b: "b",
c: 4,
};
enum과 생김새가 흡사하지만 차이점이 있다.
(1) const, let 키워드를 사용해서 선언
(2) string, number만 정의 가능하던 enum과는 다르게 배열을 포함하여 어떤 타입의 값도 대입이 가능함
이외에도
enum은 간단한 상수 값을 그룹화해서 관리할 때 적합하나, 상수이기 때문에 멤버의 값이 변할 수가 없지만
object literal은 멤버의 값이나 데이터 타입을 마음대로 변경할 수 있어
복잡한 구조와 다양한 데이터 타입을 사용할 수 있다는 장점이 있다.
'공부 > TypeScript' 카테고리의 다른 글
TypeScript 연습 - 카페 관리 프로그램 만들기 (0) | 2023.08.01 |
---|---|
타입스크립트에서 자주 쓰이는 유틸리티 타입 (0) | 2023.07.29 |
타입스크립트에서의 변수, 상수 선언 - let, const, readonly (0) | 2023.07.29 |
타입스크립트에서의 데이터 타입 사용 방법 - boolean, number, string, array, tuple, enum (0) | 2023.07.28 |
TypeScript 연습 - 성적표 프로그램 만들기 (0) | 2023.07.28 |