map_entry_not_in_map 진단: 맵 항목이 세트 리터럴 안에 있는 경우

map_entry_not_in_map 진단: 맵 항목이 세트 리터럴 안에 있는 경우

맵 항목(map entry, 키/값 쌍)이 세트(set) 리터럴 안에 있을 때 Dart 분석기가 알려주는 진단이에요. 세트에는 키/값 쌍이 들어갈 수 없으니, 리터럴을 맵으로 의도했는지 세트로 의도했는지 헷갈린 상황을 잡아내는 진단이랍니다.

출처: map_entry_not_in_map

본문

설명

분석기는 세트 리터럴 안에서 맵 항목(키/값 쌍)을 발견할 때 이 진단을 만들어요.

예시

다음 코드는 세트 리터럴인데 그 안에 맵 항목이 있기 때문에 이 진단이 나와요.

var collection = <String>{'a': 'b'};

흔한 해결 방법

컬렉션을 맵으로 의도했다면, 코드를 맵이 되도록 바꿔요. 앞의 예시에서는 타입 인자를 하나 더 추가하면 돼요.

var collection = <String, String>{'a': 'b'};

다른 경우에는 명시적 타입을 Set에서 Map으로 바꿔야 할 수도 있어요.

컬렉션을 세트로 의도했다면 맵 항목을 제거해요. 두 값 모두 세트에 포함시키려는 거라면 콜론을 쉼표로 바꾸면 돼요.

var collection = <String>{'a', 'b'};

더 알아보기