본문 바로가기
FullStack/23. Dart

Dart(다트) - Metadata(메타데이터, annotaion 어노테이션)

by nakanara 2023. 4. 19.
반응형

 

Dart 언어에서 Metadata는 코드 요소에 대한 부가적인 정보를 제공하는 방법입니다. 메타데이터는 어노테이션(annotation)이라고도 불립니다.

Dart에서 메타데이터는 @ 기호를 사용하여 표시됩니다. 어노테이션은 클래스, 함수, 변수 및 인자와 같은 요소에 추가될 수 있습니다. 예를 들어, 다음과 같이 어노테이션을 사용하여 함수에 대한 메타데이터를 추가할 수 있습니다.

@deprecated  
void oldFunction() {  
  // function body  
}  

@deprecated 어노테이션은 함수가 더 이상 권장되지 않음을 나타냅니다. 이러한 메타데이터는 개발자가 코드를 더 잘 이해할 수 있도록 도와줍니다. 또한 일부 어노테이션은 코드를 컴파일하는 데 도움이 됩니다. 예를 들어, @override 어노테이션은 부모 클래스나 인터페이스의 메서드를 재정의한다는 것을 나타내어 컴파일러가 이를 검증할 수 있도록 합니다.

사용자가 직접 어노테이션을 정의할 수도 있습니다. 이를 통해 코드 요소에 대한 부가적인 정보를 추가하거나 다른 도구나 라이브러리에서 사용할 수 있는 메타데이터를 정의할 수 있습니다. 예를 들어, 다음과 같이 @immutable 어노테이션을 정의하여 객체가 변경될 수 없음을 나타내는 메타데이터를 추가할 수 있습니다.

class immutable {  
  const immutable();  
}  

그런 다음, 다음과 같이 이 어노테이션을 사용하여 변경될 수 없는 객체를 정의할 수 있습니다.

@immutable  
class MyImmutableClass {  
  final int value;  
  const MyImmutableClass(this.value);  
}  

이러한 방식으로 메타데이터를 사용하면 Dart 코드에 대한 정보를 더 잘 전달하고, 코드의 가독성과 유지 보수성을 높일 수 있습니다.

주요 메타데이터(어노테이션)

  • @override: 메서드가 부모 클래스나 인터페이스에서 상속된 메서드를 재정의하는 것을 나타냅니다.
  • @deprecated: 요소가 더 이상 권장되지 않음을 나타냅니다.
  • @immutable: 객체가 변경될 수 없음을 나타냅니다.
  • @required: 인자가 필수적인 것을 나타냅니다.
  • @optionalTypeArgs: 제네릭 타입 인자가 선택적임을 나타냅니다.
  • @factory: 팩토리 생성자를 나타냅니다.
  • @mixin: mixin 클래스를 나타냅니다.
  • @sealed: 클래스가 더 이상 확장되지 않음을 나타냅니다.
  • @visibleForTesting: 요소가 테스트에서만 사용되어야 함을 나타냅니다.
  • @nonVirtual: 메서드가 동적으로 재정의될 수 없음을 나타냅니다.
반응형

'FullStack > 23. Dart' 카테고리의 다른 글

Dart(다트) - 연산자  (0) 2023.04.16
Dart(다트) - as(타입캐스팅), is(타입 체크)  (0) 2023.04.14
Dart(다트) - 변수  (0) 2023.04.14
Dart(다트) 언어란?  (1) 2023.04.14