Typescript 문법 2

Lia·2024년 4월 1일
0
post-thumbnail

readonly 사용하기

readonly 키워드를 사용하여 변수나 속성을 읽기 전용으로 만들 수 있음
이는 변수나 속성을 선언한 후에는 값을 수정할 수 없도록 함

type Player = {
    readonly name: string; // 플레이어의 이름 (읽기 전용)
    age?: number; // 플레이어의 나이 (선택적)
};

const playerMaker = (name: string): Player => ({ name });

const nico = playerMaker("nico");
// ✅ 유효함
nico.name = "aa"; // 오류: 'name'은 읽기 전용 속성이기 때문에 할당할 수 없음

const numbers: readonly number[] = [1, 2, 3, 4];
// ✅ 유효하지 않음
numbers.push(1); // 오류: 'push' 속성은 'readonly number[]' 타입에 존재하지 않음

readonly를 사용함으로써 변수나 속성의 값을 변경할 수 없으므로, 불변성을 유지할 수 있다.
하지만 JavaScript의 배열과 달리 TypeScript의 readonly 배열은 런타임에서의 불변성을 보장하지 않는다.

Tuple

튜플은 정해진 개수와 순서에 따라 요소를 가진 배열을 선언할 때 사용

const player: [string, number, boolean] = ["nico", 1, true];
// ✅ 유효함

튜플 역시 readonly를 사용하여 읽기 전용으로 선언할 수 있음

const player: readonly [string, number, boolean] = ["nico", 1, true];

undefined, null, any

undefined: 변수를 선언할 때 초기값을 주지 않으면 자동으로 할당되는 값.이 값을 직접 할당할 수도 있음.
null: 명시적으로 변수에 할당할 수 있는 값으로, 아무런 값도 없음을 나타냄
any: 어떤 타입의 값이든 할당할 수 있는 타입으로, 타입 검사를 거치지 않음

let x: undefined = undefined; // 변수 x에 undefined 할당
let y: null = null; // 변수 y에 null 할당
let z: any = "hello"; // 변수 z에 어떤 타입의 값이든 할당 가능

undefined는 선언되었지만 할당되지 않은 상태를 나타내고
null은 명시적으로 아무 값도 없음을 나타냄
any는 모든 타입의 값을 할당할 수 있기 때문에 타입 검사를 받지 않음
-> 그러므로 타입스크립트의 타입 안전성을 해칠 수 있으므로 가능한 사용을 피하는 것이 좋다.

profile
https://lia-portfolio.vercel.app/

0개의 댓글