2
언제 데코레이터가 실행됩니까?typescript/js 데코레이터가 실행되는시기
class Person {
@SomeDecorator
age
}
- 나는 Person 클래스는
무엇 정적 속성에 대한 구문 분석됩니다
언제 데코레이터가 실행됩니까?typescript/js 데코레이터가 실행되는시기
class Person {
@SomeDecorator
age
}
무엇 정적 속성에 대한 구문 분석됩니다
속성 데코레이터는 클래스가 정의 될 때 초기에 실행됩니다. 인스턴스를 구성하거나 속성에 액세스 할 필요가 없습니다.
예 : Person
클래스가 생성되지 않아도 age
이 기록됩니다. 속성이 정적 인 경우에도 마찬가지입니다.
function SomeDecorator(a, b) {
console.log(b);
}
class Person {
@SomeDecorator
public age: number;
}
속성에 대한 get 및 set 작업을 수행 한 후에도 가능합니다. 다음은 Pro TypeScript (Second Edition)의 업체 정보입니다. getter와 setter를 래핑하여 작동합니다.
function log(target: any, key: string) {
let value = target[key];
// Replacement getter
const getter = function() {
console.log(`Getter for ${key} returned ${value}`);
return value;
};
// Replacement setter
const setter = function (newVal) {
console.log(`Set ${key} to ${newVal}`);
value = newVal;
};
// Replace the property
if (delete this[key]) {
Object.defineProperty(target, key, {
get: getter,
set: setter,
enumerable: true,
configurable: true
});
}
}
class Calculator {
@log
public num: number;
square() {
return this.num * this.num;
}
}
console.log('Construct');
const calc = new Calculator();
console.log('Set');
// Set num to 4
calc.num = 4;
console.log('Get');
// Getter for num returned 4
// Getter for num returned 4
calc.square();
이 리스팅의 출력은 다음과 같습니다
Construct (manual log)
Set (manual log)
-> Set num to 4
Get (manual log)
-> Getter for num returned 4
-> Getter for num returned 4
정적 클래스는 무엇입니까? – Bergi
@Bergi Sry, 정적 속성의 장식자를 의미했습니다. – Chris