'this' 잘못된 참조 진단: this는 인스턴스 메서드나 generative 생성자 안에서만 쓸 수 있어요

'this' 잘못된 참조 진단: this는 인스턴스 메서드나 generative 생성자 안에서만 쓸 수 있어요

예약어 this는 인스턴스 메서드, generative 생성자, 또는 late 인스턴스 필드 선언의 초기화 문맥에서만 정의돼요. 그 밖의 곳에서 쓰면 Dart 분석기가 invalid_reference_to_this 진단을 내보내요.

출처: invalid_reference_to_this

본문

설명

분석기는 this가 인스턴스 메서드나 generative 생성자 밖에서 사용되었을 때 이 진단을 만들어요. 예약어 this는 인스턴스 메서드, generative 생성자, 또는 late 인스턴스 필드 선언의 초기화라는 문맥에서만 정의되기 때문이에요.

예시

다음 코드는 v가 최상위 변수이기 때문에 이 진단을 만들어요.

C f() => this;

class C {}

흔한 해결 방법

this 자리에 적절한 타입의 변수를 사용하고, 필요하면 그 변수를 선언해 주세요.

C f(C c) => c;

class C {}

더 알아보기