Каков эквивалент машинописного текста для типа опции 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

Другие вопросы по тегам