잠온다

TS) Literal Types / as const 본문

Typescript

TS) Literal Types / as const

블블디 2022. 5. 28. 22:21

1. Literal Types

let kim: '대머리';
let john: '솔로';
// kim이라는 변수에는 '대머리'라는 문자열만 할당 가능

==============================================================================================

let 방향: 'left' | 'right';
방향 = 'left';

==============================================================================================

function poo(x: 'hello') : '안녕하세요' | '반갑습니다' {
	return '반갑습니다';
}

2. as cont

var person = { name: 'kim' }

function poo(x: 'kim') {}

poo(person.name);	// error

// poo 함수의 x는 'kim' 이라는 타입만 받을 수 있다.
// 하지만 person의 name 속성은 값이 'kim'이지 타입은 string이기 때문에 error가 발생한다.

============================================================================================

var person = { name: 'kim' } as const;

function poo(x: 'kim') {}

poo(person.name);	// error 아님!

// as count를 사용하면 object 속성의 타입을 해당 value로 변경해주며,
// object 안의 모든 속성을 readonly로 바꿔준다.

============================================================================================

// 위 첫번째 예제를 해결하기 위해 이전 글에서 설명한 assertion을 통해 해결 가능하긴 하다.
// ex : poo(person.name as 'kim');

 

Comments