Как добавить новое свойство или метод в класс с помощью декоратора? - PullRequest
0 голосов
/ 25 мая 2018

В основном тот же вопрос, что и этот .Но еще немного требований.

  1. Как добавить новое свойство / метод в класс, используя декоратор property вместо декоратора class ?
  2. Критично - как сделать это безопасным для типов способом автоматически? Может ли TypeScript поддерживать вывод добавленного ключа?В более раннем примере нам пришлось вручную добавить информацию о типе.Возможно ли для TypeScript это сделать вывод?

Пример:

class HeaderComponent extends Vue {

    // @Stream$ should add key teanantId$ to class?
    @Stream$((store) => store.urlState.tenantId)
    public tenantId: number;
}

Вот как это должно работать:

const a = new HeaderComponent();

// works
a.tenant;

// CAN THIS WORK?
a.tenantId$;

1 Ответ

0 голосов
/ 25 мая 2018

Мутация декоратора класса в настоящее время не поддерживается в TypeScript.

Декорированному классу требуется объединенное объявление для явного определения новых свойств:

interface HeaderComponent {
    tenantId$: Observable<number>;
}
class HeaderComponent extends Vue {
    @Stream$((store) => store.urlState.tenantId)
    public tenantId: number;
}

С tenantId$ свойствоимя является результатом вычисления времени выполнения, нет никаких шансов, что его вывод будет возможен в будущем.

...