반응형
dart 언어에서는 javascript처럼 타입을 쓰지 않아도 돌아가게끔 되어 있다. 이렇게 정적 검사를 실행하지 않도록 강제하는 것을 dynamic type이라고 불리는데, 아래처럼 사용한다.
기본 사용법
void main() {
var name1;
dynamic name2;
name1 = 'monggu';
name2 = 12;
name2 = true;
}
- name1처럼 변수 앞에 var를 붙여 쓸 수 있다. IDE에서 name1 위에 마우스를 올려 보면 아래 사진에서 볼 수 있듯이 dynamic이라는 타입으로 표시되고 있다.
- name2처럼 변수 앞에 dynamic을 붙여 써도 된다. 이 경우에도 dynamic 타입으로 표시된다.
- name1이나 name2에 할당한 것처럼 아무 타입의 변수든 할당할 수 있고, name2처럼 재할당할 수도 있다.
if문을 통해 특정 타입임을 확인시켜 준다면
기본적으로 dynamic 타입의 변수에는 지원되는 메서드가 굉장히 적은데, if문을 통해 특정 타입임을 확인시켜 주면 해당 타입에서 지원되는 메서드를 활용할 수 있도록 바뀐다.
위 사진에서는 dynamic 타입에서 지원되는 메서드 모두를 보여주는데 보다시피 되는 게 없다. 그러나 if문을 통해 특정 타입임을 확인시켜 준다면 해당 타입에서 지원해주는 메서드를 활용할 수 있다.
어떨 때 쓸까?
실제 코드에서는 dynamic 타입은 없어야 한다고 본다. 애초에 null safefy를 지원하고 타입이 있는 언어인데 dynamic같은 건 있어서 안 된다. 다만 개발 과정 중 다른 서버로부터 어떤 데이터를 받아야 하는데 데이터 타입을 모른다면 dynamic을 활용하여 데이터 타입을 확인할 수 있도록 도와주기 때문에, 이런 경우에는 쓸만하다.
하지만 공식 문서에서는 보통 dynamic 대신에 Object나 Object?를 쓰는 것을 권장하고 있으며 노마드코더 dart 강의에서도 되도록 지양하자고 말한다. 그러니 정말 필요할 때만 쓰고, 목적을 달성했으면 Object이나 Object?, 혹은 특정 타입으로 변경하자.
참고 자료
반응형