Каков эквивалент машинописного текста для типа опции ReasonML?
В ReasonML
option
тип - это вариант, который может быть
Some('a)
или же
None
.
Как мне смоделировать то же самое в машинописном тексте?
2 ответа
TypeScript не имеет прямого эквивалента. То, что вы сделаете вместо этого, немного зависит от того, для чего вы его используете: свойство, параметр функции, переменная или тип возвращаемого значения функции...
Если вы используете его для свойства (в объекте / интерфейсе), вы, вероятно, используете необязательные свойства, например:
interface Something {
myProperty?: SomeType;
// ^−−−−− marks it as optional
}
Такое же обозначение работает для параметров функции.
Для переменных или возвращаемых типов вы можете использовать тип объединения с
undefined
или же
null
, например:
let example: SomeType | undefined;
// or
let example: SomeType | null = null;
Первый говорит, что
example
может быть типа
SomeType
или же
undefined
, второй говорит, что это может быть
SomeType
или же
null
. (Обратите внимание, что последний нуждался в инициализаторе, иначе
example
было бы
undefined
, и это недопустимое значение для
SomeType | null
.)
Возможно, примерно так:
export type None = never;
export type Some<A> = A;
export type Option<A> = None | Some<A>
Если вас интересует функциональное программирование с помощью ts, вы можете взглянуть на fp-ts