TypeScript版本: 4.0.5
搜索词:
参数装饰器,setter
代码
class A {
set c(@log('c1') c1: string) {}
}
预期行为:
抛出错误。
实际行为:
现在没有错误了,但执行了一些奇怪的行为。请查看 playground。
Playground链接:
https://www.typescriptlang.org/play?#code/GYVwdgxgLglg9mABAGzgcwBQGcoCcBciOuMYaAlIgN4BQi9iuAplCLkqJLAohlAIa40LQgHkARgCsm0ADR0GigA644SprigBPANJMthYqTSIAPkS0BbcXGTzFywf0ssNASTAATJgA9C-MC1KWgdECAQsWyYAOlRMYnIFRABfGlSaCGR+LCxEAEFqJMQAemKUdEQoAHcYCCYigAE4jAByfhbExSwWRH4MJvRW-gBGDt7hwzxjYPTFUvKTBDrG5pbxDqLuqERxDHEJoimyGZoi+bA4Bc2eiH7ViFHKB8mSY+pU1KA
相关问题:
5条答案
按热度按时间woobm2wo1#
这是否意味着以下测试无效?
TypeScript/tests/cases/compiler/sourceMapValidationDecorators.ts
第51行到第56行 b5b0437
| | setgreetings( |
| | @ParameterDecorator1 |
| | @ParameterDecorator2(90) |
| | greetings: string){ |
| | this.greeting=greetings; |
| | } |
/cc @DanielRosenwasser
cigdeys32#
需要询问@rbuckton
cgfeq70w3#
@RyanCavanaugh 也许在setter上使用装饰器是可以接受的 :)。我发现了这个规范参数-装饰器和注解,但是没有提到setter。
uqjltbpv4#
规范没有涵盖这种情况,所以我认为它是不允许的,但它可能不是错误。TS是否完全遵循规范?如果有任何差异是可能的,那么我们可以关闭这个问题。无论如何,来自@rbuckton的答案可以澄清这种情况。
mrwjdhj35#
好的,是否允许。TS中的实现很奇怪,这确实是一个bug。
个人认为,TS可以禁止这种语法或修复这个bug。