@Decorators
@Decorators
- 아직 표준화되지 않은 문법
- 자바스크립트
mixin
과 비슷한 기능
- 기존의 함수나 클래스를 좀더 다양한 형태로 재활용 할수있는 기법
- 어노테이션을 활용하여 기존의 존재하는 함수나 클래스를 한단계 감싸서 원하는 추가 기능을 넣는 방법
Angular
에서 자주 사용되는 문법
어노테이션이란?
어노테이션(Annotation)은 메타데이터(metadata)라고 볼 수 있습니다.
메타데이터는 Application이 처리하는 데이터가 아니고, 컴파일 과정과 런타임 과정에서 코드를 어떻게 컴파일하고 처리할것인지를 알려주는 정보입니다.
어노테이션은 다음과 같은 형태로 작성됩니다.
@AnnotationName
어노테이션은 다음 세가지 용도로 사용됩니다.
1.컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공
2.소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
3.실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공
예제
tsconfig.json
mixin
과 비슷한 기능Angular
에서 자주 사용되는 문법어노테이션이란?
어노테이션(Annotation)은 메타데이터(metadata)라고 볼 수 있습니다.
메타데이터는 Application이 처리하는 데이터가 아니고, 컴파일 과정과 런타임 과정에서 코드를 어떻게 컴파일하고 처리할것인지를 알려주는 정보입니다.
어노테이션은 다음과 같은 형태로 작성됩니다.
@AnnotationName
어노테이션은 다음 세가지 용도로 사용됩니다.
1.컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공
2.소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
3.실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공
아직 비표준 문법이라 tsconfig.json
에서 옵션값을 true
로 변경해주어야 한다.
{
"compilerOptions": {
"experimentalDecorators": true,
}
}
function sealed(constructor: Function) {
Object.seal(constructor);
Object.seal(constructor.prototype);
}
// 사용하는 곳에서 어노테이션으로 간편하게 사용
@sealed
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return `Hello, ${this.greeting}`;
}
}
Object.seal() 메서드는 객체를 밀봉합니다.
객체를 밀봉하면 그 객체에는 새로운 속성을 추가할 수 없고, 현재 존재하는 모든 속성을 설정 불가능 상태로 만들어줍니다. 하지만 쓰기 가능한 속성의 값은 밀봉 후에도 변경할 수 있습니다
(역자 주 : 바로 이 점이 Object.freeze()와의 차이라고 할 수 있습니다).
Author And Source
이 문제에 관하여(@Decorators), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jtwjs/Decorators저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)