是否有等同于 C# 属性的 TypeScript

Is there a TypeScript equivalent to C#'s attributes

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

[Required]
string personName

说明需要personName。我们可以通过反射在任何给定时间获取属性的属性。

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

I was wondering if TypeScript has some feature like that?

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

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

当然,TypeScript 有装饰器,见Official Documentation