Codesandbox с ошибочным тестом в файле weird.spec.ts (Игнорировать реакцию).
Чтобы увидеть неудачный тест, нажмите Показать тесты в правом верхнем углу.
У меня есть класс и декоратор, который я использую для проверки:
function Validate(original: any) {
return (class extends original {
constructor(...args: any[]) {
super(...args);
// some validation here,
// throwing a custom error
}
}
) as any;
}
@Validate
export class Weird {
public value: string;
constructor(value: string) {
this.value = value;
}
static thing = new Weird('thing');
}
Моя проблема (как видно из теста с ошибками)что
Weird.thing instanceof Weird // false
Я также пытался использовать для этого геттер, и он работает, как и ожидалось, но каждый раз он будет возвращать новый экземпляр.То, что я действительно хочу, это:
- Статическое свойство, позволяющее использовать класс как «enum» способом
- Возвращает тот же экземпляр (инициализированный один раз)
- Поддерживает наследование.
- Не является явно закодированным вручную "кэшированным статическим получателем".Я в порядке с компилятором, делающим это для меня.
Что мне нужно настроить, чтобы изменить текущее поведение в соответствии с тем, что я хочу?