TypeScript не имеет конструкторов данных во время выполнения, единственной структурой времени выполнения, созданной TS, является Enum, остальными являются только аннотации типов, которые используются только во время компиляции, во время выполнения типы не существуют.
Тем не менее, мы можем сказать, что типы TS являются только информацией о заключенном нами контракте / допущении, и они не проверяются во время выполнения.
Если вы хотите иметь конструкторы значений, то функции, которые будут создавать правильное значение заданного введите нужное вам или создайте его самостоятельно, либо используйте стороннюю библиотеку.
Ниже приведен пример пользовательского конструктора типа + значение. Этот вид инструмента позволяет создавать только допустимые значения, которые соответствуют предположению типа:
// type
type SomeType = { field: string }
// value constructor
const createSomeType = (a: any): SomeType => {
const fieldInside = 'field' in a;
const stringField = typeof a.field === 'string';
if (!fieldInside || !stringField) {
throw TypeError('SomeType value was not able to be created');
}
return { field: a.field }; // proper value
}
const someValue = createSomeType({ field: 'someStr' }) // correct no error
createSomeType({ otherField: 'x' }) // exception