ReasonML 选项类型的打字稿等价物是什么?
What is the typescript equivalent for ReasonML's option type?
在 ReasonML 中,option
类型是一个变体,可以是 Some('a)
或 None
。
我如何在打字稿中对同一事物建模?
也许,像这样:
export type None = never;
export type Some<A> = A;
export type Option<A> = None | Some<A>
如果你对使用 ts 进行函数式编程感兴趣,可以看看 fp-ts
TypeScript 没有直接的等效项。相反,您要做什么取决于您使用它的目的:属性、函数参数、变量或函数 return 类型...
如果您将它用于 属性(在 object/interface 中),您可能会使用 optional properties,例如:
interface Something {
myProperty?: SomeType;
// ^−−−−− marks it as optional
}
相同的符号适用于函数参数。
对于变量或 return 类型,您可以使用 union type 和 undefined
或 null
,例如:
let example: SomeType | undefined;
// or
let example: SomeType | null = null;
第一个说 example
可以是 SomeType
或 undefined
类型,第二个说它可以是 SomeType
或 null
。 (注意后者需要一个初始值设定项,否则 example
将是 undefined
,这不是 SomeType | null
的有效值。)
在 ReasonML 中,option
类型是一个变体,可以是 Some('a)
或 None
。
我如何在打字稿中对同一事物建模?
也许,像这样:
export type None = never;
export type Some<A> = A;
export type Option<A> = None | Some<A>
如果你对使用 ts 进行函数式编程感兴趣,可以看看 fp-ts
TypeScript 没有直接的等效项。相反,您要做什么取决于您使用它的目的:属性、函数参数、变量或函数 return 类型...
如果您将它用于 属性(在 object/interface 中),您可能会使用 optional properties,例如:
interface Something {
myProperty?: SomeType;
// ^−−−−− marks it as optional
}
相同的符号适用于函数参数。
对于变量或 return 类型,您可以使用 union type 和 undefined
或 null
,例如:
let example: SomeType | undefined;
// or
let example: SomeType | null = null;
第一个说 example
可以是 SomeType
或 undefined
类型,第二个说它可以是 SomeType
或 null
。 (注意后者需要一个初始值设定项,否则 example
将是 undefined
,这不是 SomeType | null
的有效值。)