gpt4 book ai didi

attributes - Typescript 惯用语将属性添加到与方法定义内联的方法中

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:33 26 4
gpt4 key购买 nike

typescript 中是否有任何习惯用法来定义与方法定义内联的类中的方法的属性?

我正在寻找类似于 .NET 属性的内容。

这是我到目前为止所得到的示例

class FooController {
foo(req: express.Request, res: express.Response) {
res.send(JSON.stringify({ loc: 'FooController::foo 2 here '+req.params.fooId }));
}
bar(req: express.Request, res: express.Response) {
res.send(JSON.stringify({ loc: 'FooController::bar here' }));
}
}
FooController.prototype.foo['route'] = '/foo/:fooId';
FooController.prototype.foo['verb'] = 'get';
FooController.prototype.bar['route'] = '/bar';
FooController.prototype.bar['verb'] = 'post';

在调用任何 FooController 方法之前,不同的函数将使用 FooController 并询问方法属性以设置路由表。

我不喜欢我的方法定义和我的属性定义之间的距离,尤其是当我的方法变得越来越大并且支持函数位于两者之间时。

这里有什么我可以做的更好的吗?如果除了属性之外,我应该使用不同的语言功能来表达这一点,我对此持开放态度。如果解决方案保留类型安全,我特别感兴趣。

我做了评论build a function object with properties in typescript但由于延迟绑定(bind)和对象方法要求,我不认为那里的解决方案很匹配。

我在 Visual Studio 2013 Update 3 中使用 1.0.3 版的 typescript 编译器。

最佳答案

这是 TypeScript 装饰器的理想候选者:https://github.com/Microsoft/TypeScript/issues/2249 .您重构的代码:

class FooController {
@route(/*put your config here*/)
foo(req: express.Request, res: express.Response) {
res.send(JSON.stringify({ loc: 'FooController::foo 2 here '+req.params.fooId }));
}
@route(/*put your config here*/)
bar(req: express.Request, res: express.Response) {
res.send(JSON.stringify({ loc: 'FooController::bar here' }));
}
}

请注意,您将需要很快就会发布的 TypeScript 1.5。

关于attributes - Typescript 惯用语将属性添加到与方法定义内联的方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com