【问题标题】:Is there a TypeScript equivalent to C#'s attributes是否有与 C# 的属性等效的 TypeScript
【发布时间】:2017-02-16 00:03:08
【问题描述】:

在 C# 中,有一种语法可用于定义属性的属性。

[Required]
string personName

它描述了 personName 是必需的。我们可以通过反射在任何给定时间获取属性的属性。

我想知道 TypeScript 是否有类似的功能?

【问题讨论】:

  • @wonea 你到底在找什么? basarat 的回答似乎很清楚,他只是举了一个库的例子,库代码并不神奇,你可以看看灵感,装饰器是 TS 功能,你可以自己阅读有关实现的信息。您是否正在寻找如何使用它们的特定示例?
  • @TitianCernicova-Dragomir 我希望得到一个更详尽的答案,包括 TypeScript 如何表示具有值 [MyAttribute("GetThisString")] 的属性。

标签: c# typescript custom-attributes


【解决方案1】:

当然,TypeScript 在Official Documentation 中有装饰器。

【讨论】:

  • 我赞成这个答案以及接受的答案,因为你已经链接了官方文档,而接受的答案没有。
  • 您不能将装饰器放在接口、其成员或其他编译时类型声明上。所以,它们并不完全相同。 - github.com/microsoft/TypeScript/issues/6818
【解决方案2】:

我想知道 TypeScript 是否有类似的功能?

装饰器就是这样。例如。 mobx (https://github.com/mobxjs/mobx) 使用它来使事物可观察

class TodoList {
    @observable todos = [];
    @computed get unfinishedTodoCount() {
        return this.todos.filter(todo => !todo.finished).length;
    }
}

【讨论】:

  • 非常感谢。你让我开心!
  • @LukaŠilje 请记住,装饰器不会像 .Net Reelection API 那样提供类型信息
猜你喜欢
  • 1970-01-01
  • 2014-05-28
  • 2011-02-19
  • 2021-04-30
  • 2017-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多