[Flutter/Dart] 타입 확인 방법 - is, as, runtimeType 완벽 정리

Dart를 사용하다 보면 변수의 타입을 확인해야 할 때가 많습니다. 특히, 제네릭을 사용할 때나 런타임에서 특정 타입에 따라 다른 로직을 수행해야 하는 경우 타입 체크는 필수적입니다.

Dart에서는 is, as, runtimeType 등을 활용하여 타입을 확인할 수 있습니다. 이번 포스트에서는 Dart에서 타입을 확인하는 다양한 방법을 예제와 함께 설명하겠습니다.

 

 

1. is 연산자: 객체가 특정 타입인지 확인

is 연산자는 객체가 특정 타입인지 확인할 때 사용됩니다. 만약 해당 타입이라면 true, 그렇지 않다면 false를 반환합니다.

void main() {
  var value = "Hello, Dart!";

  if (value is String) {
    print("value는 String 타입입니다.");
  } else {
    print("value는 String 타입이 아닙니다.");
  }
}

실행결과는 다음과 같습니다.

value는 String 타입입니다.

 

 

2. as 연산자: 타입 변환 (캐스팅)

as 연산자는 객체를 특정 타입으로 변환할 때 사용됩니다. 하지만, 변환이 불가능할 경우 런타임 에러가 발생할 수 있으므로 주의해야 합니다.

void main() {
  dynamic value = "Hello, Dart!";

  String text = value as String;
  print(text); // 출력: Hello, Dart!
}

 

as 사용 시 주의할 점

as 연산자를 사용할 때 변환할 수 없는 타입이라면 예외가 발생합니다. 따라서 is 연산자를 사용해 안전성을 확보하는 것이 좋습니다.

void main() {
  dynamic value = 42;

  if (value is String) {
    String text = value as String;
    print(text);
  } else {
    print("value는 String 타입이 아닙니다.");
  }
}

실행결과는 다음과 같습니다.

value는 String 타입이 아닙니다.

 

 

3. runtimeType 속성: 현재 타입 확인

runtimeType은 객체의 실제 타입을 반환하는 속성입니다.

void main() {
  var number = 100;
  var text = "Dart";

  print("number의 타입: ${number.runtimeType}"); // 출력: number의 타입: int
  print("text의 타입: ${text.runtimeType}"); // 출력: text의 타입: String
}

 

 

4. is! 연산자: 특정 타입이 아닌지 확인

is! 연산자는 객체가 특정 타입이 아닌지 확인할 때 사용됩니다.

void main() {
  var value = 3.14;

  if (value is! int) {
    print("value는 int 타입이 아닙니다.");
  }
}

실행결과는 다음과 같습니다.

value는 int 타입이 아닙니다.

 

 

5. Type과 compareTo()를 활용한 타입 비교

Dart에서는 ==를 사용하여 Type을 비교할 수도 있습니다. 하지만 is 연산자를 사용하는 것이 더 안전하고 직관적입니다.

void main() {
  var value = "Dart";

  if (value.runtimeType == String) {
    print("value는 String 타입입니다.");
  }
}

실행결과는 다음과 같습니다.

value는 String 타입입니다.

 

 

마무리

Dart에서 타입을 확인하는 방법은 여러 가지가 있지만, 상황에 맞는 올바른 방법을 선택하는 것이 중요합니다.

  • is 연산자: 특정 타입인지 확인할 때 사용
  • as 연산자: 안전한 캐스팅을 위해 is와 함께 사용
  • runtimeType 속성: 실제 타입을 확인할 때 유용
  • is! 연산자: 특정 타입이 아닌 경우 확인

Dart에서 올바른 타입 체크 방법을 활용하여 안정적인 코드를 작성해 보세요! 😊