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에서 올바른 타입 체크 방법을 활용하여 안정적인 코드를 작성해 보세요! 😊