fp-ts 选项、打字稿和未定义
fp-ts Option, Typescript and undefined
我正在尝试使用 fp-ts/Option
和 Typescript 创建一个简单的辅助函数,它接受一个 任意 值和returns 它作为 Option<T>
.
export const toOption = <T>(val: T): Option<T> => {
return fromNullable(val);
};
我遇到的问题是,无论我做什么,它都会在选项中包含 undefined 。
在 somefile.tsx
我有一个对象,其键值使用 toOption
函数。我需要该值是一个 Option only 但它读取的类型是 (property) airDate: Option<(string & Date) | undefined>
{
airDate:toOption(attributes.airDate), // (property) airDate: Option<(string & Date) | undefined>
}
使用类型保护
export const toOption = <T>(val: T): Option<T> => {
if(typeof val == undefined) return none;
return fromNullable(val);
};
三元
export const toOption = <T>(val: T): Option<T> => {
return val ? some(val) : none;
};
有条件的
export const toOption = <T>(val: T): Option<T> => {
if(!val) return none;
return some(val)
};
它们最终都产生相同的类型:(property) airDate: Option<(string & Date) | undefined>
typescript 实用程序类型 NonNullable
在这种时候派上用场。
export const toOption = <T>(val: T): Option<NonNullable<T>> => {
return fromNullable(val);
};
但是请注意 toOption
和 fromNullable
之间没有区别,所以如果您想使用名称 toOption
,您可以将函数作为值分配给 toOption
variable/const
export const toOption = fromNullable
不需要注解类型因为fromNullable
的签名已经是<A>(a: A) => Option<NonNullable<A>>
我正在尝试使用 fp-ts/Option
和 Typescript 创建一个简单的辅助函数,它接受一个 任意 值和returns 它作为 Option<T>
.
export const toOption = <T>(val: T): Option<T> => {
return fromNullable(val);
};
我遇到的问题是,无论我做什么,它都会在选项中包含 undefined 。
在 somefile.tsx
我有一个对象,其键值使用 toOption
函数。我需要该值是一个 Option only 但它读取的类型是 (property) airDate: Option<(string & Date) | undefined>
{
airDate:toOption(attributes.airDate), // (property) airDate: Option<(string & Date) | undefined>
}
使用类型保护
export const toOption = <T>(val: T): Option<T> => {
if(typeof val == undefined) return none;
return fromNullable(val);
};
三元
export const toOption = <T>(val: T): Option<T> => {
return val ? some(val) : none;
};
有条件的
export const toOption = <T>(val: T): Option<T> => {
if(!val) return none;
return some(val)
};
它们最终都产生相同的类型:(property) airDate: Option<(string & Date) | undefined>
typescript 实用程序类型 NonNullable
在这种时候派上用场。
export const toOption = <T>(val: T): Option<NonNullable<T>> => {
return fromNullable(val);
};
但是请注意 toOption
和 fromNullable
之间没有区别,所以如果您想使用名称 toOption
,您可以将函数作为值分配给 toOption
variable/const
export const toOption = fromNullable
不需要注解类型因为fromNullable
的签名已经是<A>(a: A) => Option<NonNullable<A>>