我想使用裝飾來實作這一點,但出了點問題。我不知道如何從裝飾函式中獲取資料。
class CalcClass{
@subtract(1)
@multiply(2)
addOne(number:number) {
return number 1;
}
}
console.log(new CalcClass().addOne(2))
function subtract(number:number) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
descriptor.value = number - 1;
return descriptor.value;
};
}
function multiply(number:number) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
descriptor.value = number * 2;
return descriptor.value;
};
}
uj5u.com熱心網友回復:
我只是假設您想使用裝飾器修改函式的回傳值。然后我們可以像這樣實作它們:
class CalcClass{
@subtract(1)
@multiply(2)
addOne(number:number) {
return number 1;
}
}
console.log(new CalcClass().addOne(2))
function subtract(number:number) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const originalFunction = descriptor.value; // save the original function
// overwrite the function with another function that calls the original, but does some extra work
descriptor.value = (...args: any[]) => originalFunction(...args) - number;
};
}
function multiply(number:number) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const originalFunction = descriptor.value;
descriptor.value = (...args: any[]) => originalFunction(...args) * number;
};
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/523611.html
標籤:打字稿