TypeScript版本: 2.6.2
搜索关键词: namespace decorator same class
代码
@C1.Decorator
export class C1{ }
export namespace C1 {
export function Decorator(target: T) { }
}
@C1.Decorator
@C2.Decorator
export class C2 { }
export namespace C2 {
export function Decorator(target: T) { }
}
预期行为: 如果这不是一个特性,那么装饰器应该在运行时定义,或者在编译过程中提供一些警告或错误?
实际行为: 来自命名空间C1的装饰器用于类C1未定义,当用于类C2时,来自C1的装饰器已定义,来自C2的装饰器未定义
**示例链接:**https://www.typescriptlang.org/play/index.html#src=%40C1.Decorator%0D%0Aexport%20class%20C1%7B%20%7D%0D%0Aexport%20namespace%20C1%20%7B%20%0D%0A%20%20export%20function%20Decorator%3CT%3E(target%3A%20T)%20%7B%20%7D%0D%0A%7D%0D%0A%40C1.Decorator%0D%0A%40C2.Decorator%0D%0Aexport%20class%20C2%20%7B%20%7D%0D%0A%0D%0Aexport%20namespace%20C2%20%7B%20%0D%0A%20%20export%20function%20Decorator%3CT%3E(target%3A%20T)%20%7B%20%7D%0D%0A%7D
相关问题: 我未找到任何相关问题
5条答案
按热度按时间vwhgwdsa1#
看起来我们没有为命名空间中的变量提供在分配之前使用过的错误提示。
似乎我们可以做到这一点,所以暂时将其标记为错误。
5gfr0r5j2#
我给出的这个例子,还有一个上下文。当你合并类和命名空间时,ts会强制我在类声明后面加上命名空间。当你发出used-before-assigned警告时,这将完全阻止我的案例。装饰器将不可能在类命名空间中声明并在同一类上使用。我不介意这一点。
thigvfpy3#
解:由题意,$f(x)=x^{2}+1$,
则$f(-x)=(-x)^{2}+1=x^{2}+1=f(x)$,
故函数f(x)为偶函数。
jljoyd4f4#
那样的话,当然可以,我也是这样做的。谢谢你的澄清。
lnlaulya5#
现在,函数支持在TS中扩展属性(并在JS中已经有一段时间了),那里也有相同的错误报告: