Хабр доступен 24/7 благодаря поддержке друзей

Комментарии 4
Считаете ли вы, что имитация номинативных типов через брендирование улучшает устойчивость программы?
Используем вот такую штуку года где-то с 2018-го:
export type Nominal<T, Name extends string> = T & { [Symbol.species]: Name };применяется например вот так:
type Price = Nominal<number, 'Price'>;Качество кода выросло очень заметно.
Беда с брендированием конкретно примитивных типов вроде number, в первую очередь, в том, что стандартные арифметические операторы ничего об этом не знают. Поэтому нужны либо makeUint на каждом шагу, либо свои функции-обертки вроде add(Uint, Uint). Я все надеюсь, что добавят перегрузки операторов на уровне объявлений, как сейчас есть для функций.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
TypeScript. Все еще без номинативной типизации