[TypeScript] 타입추론 , 타입명시 , interface

sangyong park·2022년 10월 9일
0
post-thumbnail
post-custom-banner

Type Interence (타입추론)

타입스크립트는 타입의 표기가 없는 경우 코드를 분석 하여 타입을 유추한다.

<script>
	let a = 5;
    a = "hello";
</script>

a라는 변수에 숫자 5가 할당 되어있는데 , a에 "hello"를 넣을려고 하면
타입추론에 의해서 에러가 발생한다.

함수의 return 값도 타입추론이 가능하다.

Type Annotations (타입명시)

변수를 선언할 때 변수 값의 타입을 명시함으로써 변수 값의 데이터 타입을 지정

<script>
	let x : string;
</script>

함수의 값도 타입명시가 가능하다.

:void

:void 함수는 아무것도 반환하지 않는다고 명시할 때 사용한다.

interface

interface란 상호 간에 정의한 약속 혹은 규칙을 의미한다.

인터페이스 선언

<script>
	function logPerson(obj: {name: string}) {
    console.log(obj.name);
   	}
  	let person = { name: 'yong', age: 24 };
  	logAge(person);
</script>

인터페이스를 적용한 코드

<script>
	interface person {
    name: string,
    age: number;
	}
function logPerson(obj: person) {
    console.log(obj.name);
	}
let person = { name: 'yong', age: 24 };
logAge(person);
</script>

logPerson() 의 인자는 person의 타입을 가지도록 한다.

옵셔널 체이닝

interface에 정의되어 있는 속성중에 꼭 사용하지 않아도 되는 것이 있을 때
? 를 이용해서 사용한다.

<script>
	interface person {
    name: string,
    age?: number;
	}
function logPerson(obj: person) {
    console.log(obj.name);
	}
let person = { name: 'yong'};
logAge(person);
</script>

interface에는 age를 정의 했지만 , 변수에는 age가 들어있지 않다.

이때 age 뒤에 ? 를 붙여주면 있어도 되고 없어도 되는 속성값이 되는 것이다.

읽기 전용

인터페이스로 객체를 처음 생성할 때만 값을 할당하고 , 이후에는 변경이 불가능한 속성이다.

<script>
	interface person {
   readonly name : string;
}

let people: person = {
    name:  "yong"
}
people.name = "park"; // 에러
</script>

interface로 객체를 선언하고 나서 수정을 하려고 하면 readonly 속성에 의하여 에러가 발생한다.

profile
Dreams don't run away It is always myself who runs away.
post-custom-banner

0개의 댓글