주석과 장식가의 차이점은 무엇입니까?
용어 주석을 사용해야 할 때와 장식자를 사용해야 할 때 혼동됩니다.
@Component({
selector: 'tabs',
template: `
`
})
export class Tabs {
}
주석은 리플렉트 메타데이터 라이브러리를 사용하여 클래스에 설정된 "전용" 메타데이터인 반면, 데코레이터는 클래스에서 호출되는 함수에 해당합니다.
TypeScript 및 ES7을 사용하면@Something
장식가입니다.Angular2의 맥락에서, 장식가들은 다음과 같습니다.@Component
,@Injectable
...를 사용하여 장식된 요소에 대한 메타데이터를 정의합니다.Reflect.defineMetadata
방법.
이 질문은 장식가가 실제로 무엇인지 알아보는 데 흥미로울 수 있습니다.
트레이서가 준 것은annotations
TypeScript가 제공하는 기능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
'programing' 카테고리의 다른 글
문자열 입력이 숫자인지 확인하려면 어떻게 해야 합니까? (0) | 2023.06.18 |
---|---|
목록의 키와 값이 0으로 기본 설정된 사전을 만들려면 어떻게 해야 합니까? (0) | 2023.06.18 |
Vuex 상태 또는 getter는 항상 정의되지 않은 상태를 반환합니다. (0) | 2023.06.13 |
다른 빌드 구성표에 다른 Google Service-Info.plist 사용 (0) | 2023.06.13 |
Firebase Cloud Firestore에서 GeoPoint를 저장하는 방법은 무엇입니까? (0) | 2023.06.13 |