개발자 노트
[TS] Property does not exist on type '{}'. 본문
반응형
문제
타입스크립트를 사용하고 있는데, 다음과 같은 타입에러가 발생하는 경우가 있다.
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 |
반응형
'▶ FRONT-END ◀' 카테고리의 다른 글
[TS] 타입스크립트 설치 및 환경 구축 (0) | 2023.01.15 |
---|---|
[Vue] object method에서 this가 undefined로 나오는 이슈 (0) | 2023.01.10 |
[Github] 회사 계정과 개인 계정 분리해서 사용하기 (1) | 2023.01.07 |
flex-wrap 문제, 컨테이너는 가운데 정렬 && 아이템은 왼쪽 정렬 (1) | 2020.12.06 |
[JS] net::ERR_ABORTED 404 (Not Found) 에러 (1) | 2020.12.05 |
Comments