Применять тип во время выполнения - PullRequest
0 голосов
/ 16 октября 2018

У меня есть класс модели user, который выглядит примерно так:

{
   firstName: string;
   lastName: string;
   someSwitch: boolean;
}

Если я объявляю пользователя, этот класс применяется по умолчанию и завершится с ошибкой во время компиляции:

fooUser : User = {
   firstName: string;
   lastName: string;
}

Сбой, так как необходимо определить someSwitch (если только он не будет помечен как необязательный в классе)

Как заставить принудительно соблюдать эту модель во время выполнения, не тестируя отдельно для каждого полятак как это работало бы просто отлично при запуске:

someJson = {
   firstName: string;
   lastName: string;
}

fooUser : User = someJson;

Что я мог сделать, это просто создать конструктор для User и назначить все обязательное в нем, а затем создать объект, когда мне это нужно, но это странночтобы создать конструктор для простой модели данных, может быть, я просто смотрю далеко, и это правильное решение.

1 Ответ

0 голосов
/ 16 октября 2018

к сожалению, в js нет способа сделать это без проверки необходимых свойств.Вы можете выполнять проверки typeof (x), но это поможет только для базовых типов (объект, строка, число, логическое значение).

Редактировать

После некоторых дальнейших исследований,Я думаю, что вы можете сделать что-то подобное с оператором instanceof .

Оператор instanceof проверяет наличие constructor.prototype в цепочке прототипов объекта.

...