Typescript 我如何使用和不使用参数进行装饰?
我想做一个可以使用参数和不使用参数的decorator,例如:Typescript 我如何使用和不使用参数进行装饰?,typescript,Typescript,我想做一个可以使用参数和不使用参数的decorator,例如: @Controller class SomeClass{ } @Controller("some_arg") class AnotherClass{ } 可以这样做吗?根据typescript文档: 如果希望decorator接收参数,那么decorator函数需要返回实际的decorator函数 因此,您需要创建一个处理两种情况的装饰器: 当你没有通过任何东西,它应该作为一个正常的装饰 当你传递一个字符串时
@Controller
class SomeClass{
}
@Controller("some_arg")
class AnotherClass{
}
可以这样做吗?根据typescript文档: 如果希望decorator接收参数,那么decorator函数需要返回实际的decorator函数 因此,您需要创建一个处理两种情况的装饰器:
function Controller(value: string): <T>(target: T) => T
function Controller<T>(target: T): T
function Controller<T>(value: string | T): T | ((target: T) => T) {
if (typeof value === 'string') {
return (target: T) => {
// Value is string, target is class
return target
}
}
// Value is class
return value
}
@Controller
class SomeClass{}
@Controller("some_arg")
class AnotherClass{}
功能控制器(值:字符串):(目标:T)=>T
功能控制器(目标:T):T
函数控制器(值:字符串| T):T |((目标:T)=>T){
如果(值的类型=='string'){
回报率(目标:T)=>{
//值是字符串,目标是类
返回目标
}
}
//价值就是阶级
返回值
}
@控制器
类SomeClass{}
@控制器(“某些参数”)
类另一类{}