개발자 노트

[TS] Property does not exist on type '{}'. 본문

▶ FRONT-END ◀

[TS] Property does not exist on type '{}'.

heeyam 2023. 1. 12. 18:30
반응형

문제

타입스크립트를 사용하고 있는데, 다음과 같은 타입에러가 발생하는 경우가 있다.

Property does not exist on type '{}'.

 

해당 에러를 발생시킨 코드는 다음과 같다. 

1
2
3
const obj = {};
 
obj.name = 'name';
cs

해결

에러가 발생한 코드를 보면 obj 객체가 선언 및 할당될 때에 참조하려는 프로퍼티 키인 name 정보가 없어서 타입에러가 발생한 것이다.

변수 선언 및 할당할 때 어떤 프로퍼티 키 이름이 들어가게 될지 몰라 비워두는 때가 있는데 이럴 땐 index signiture 방법을 이용해 타입을 정의하면 된다. 프로퍼티 키 이름과 값이 어떤 게 들어갈지는 몰라도, 타입은 안다면 그 타입에 맞게 선언해 주면 되고, 프로퍼티 값 타입조차도 모른다면 any로 선언해 준다.

1
// 객체 안에 들어갈 값의 key 타입이 string이고, value 타입이 string일 때
const
 obj: { [k: string]: string } = {};

// 객체 안에 들어갈 값의 key 타입이 string이고, value 타입은 어떤 값이 들어올지 모를 때
const obj: { [k: string]: any } = {};
cs

 

만약 사용할 객체에 대한 정보를 모두 알고 있고, 빈 객체를 할당하고 싶다면 알고 있는 정보의 타입을 optional로 선언해 준다. 

1
const obj: { name?: string } = {};
cs
반응형
Comments