programing

주석과 장식가의 차이점은 무엇입니까?

lovejava 2023. 6. 13. 21:54

주석과 장식가의 차이점은 무엇입니까?

용어 주석을 사용해야 할 때와 장식자를 사용해야 할 때 혼동됩니다.

 @Component({
      selector: 'tabs',
      template: `
      `
    })
    export class Tabs {

    }

주석은 리플렉트 메타데이터 라이브러리를 사용하여 클래스에 설정된 "전용" 메타데이터인 반면, 데코레이터는 클래스에서 호출되는 함수에 해당합니다.

TypeScript 및 ES7을 사용하면@Something장식가입니다.Angular2의 맥락에서, 장식가들은 다음과 같습니다.@Component,@Injectable...를 사용하여 장식된 요소에 대한 메타데이터를 정의합니다.Reflect.defineMetadata방법.

이 질문은 장식가가 실제로 무엇인지 알아보는 데 흥미로울 수 있습니다.

트레이서가 준 것은annotationsTypeScript가 제공하는 기능decorators하지만 Angular 2는 둘 다 지원합니다.

주석은 "주석" 배열을 만듭니다.반면에 데코레이터는 장식된 물체를 받고 그들이 좋아하는 것을 바꿀 수 있는 기능입니다.

앵귤러는 atScript 대신 TypeScript를 사용하기 때문에 데코레이터를 사용하고 있습니다.기본적으로 4가지 종류의 장식가가 있습니다.

  • 클래스 장식자(예: @Component 및 @NgModule)
  • 클래스 내부 특성(예: @Input 및 @Output)에 대한 특성 장식자
  • 클래스 내부의 메서드에 대한 메서드 장식자(예: @HostListener)
  • 클래스 생성자 내부의 매개변수에 대한 매개변수 장식자(예: @Inject)

자세한 내용은 다음을 참조하십시오.

구성 요소의 코드:

@Component({
  selector: 'app-customer-detail',
  ......
})

@구성요소: 장식자입니다.

app-customer-proxy: 주석입니다.

장식자는 클래스 선언 및 멤버에 대한 주석과 메타 프로그래밍 구문을 모두 추가하는 방법을 제공합니다.데코레이터는 JavaScript를 위한 2단계 제안이며 TypeScript의 실험적 기능으로 사용할 수 있습니다.

다양한 유형의 장식가가 있습니다.

  • 클래스 장식가:@Component
  • 메서드 장식자:@HostListener
  • 특성 장식가:@Input/@Output
  • 매개변수 장식기:@Inject

언급URL : https://stackoverflow.com/questions/37317705/what-is-the-difference-between-annotation-and-decorator