typescript-nullable
Version:
A TypeScript Nullable<T> Type and Monad Compliant Utility Functions
69 lines • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var isNone = function (nullable) {
return nullable === null || nullable === undefined;
};
var isSome = function (nullable) {
return nullable !== null && nullable !== undefined;
};
var mapHelper = function (func, nullable) {
return nullable !== undefined && nullable !== null
? func(nullable)
: null;
};
function map(func, nullable) {
return arguments.length === 1
? function (nullable_) { return mapHelper(func, nullable_); }
: mapHelper(func, nullable);
}
var maybeHelper = function (defaultVal, f, nullable) {
return nullable !== undefined && nullable !== null
? f(nullable)
: defaultVal;
};
function maybe(defaultVal, f, nullable) {
return arguments.length === 2
? function (nullable_) { return maybeHelper(defaultVal, f, nullable_); }
: maybeHelper(defaultVal, f, nullable);
}
var withDefaultHelper = function (defaultVal, nullable) {
return nullable !== undefined && nullable !== null
? nullable
: defaultVal;
};
function withDefault(defaultVal, nullable) {
return arguments.length === 1
? function (nullable_) { return withDefaultHelper(defaultVal, nullable_); }
: withDefaultHelper(defaultVal, nullable);
}
var andThenHelper = function (func, nullable) {
return nullable !== undefined && nullable !== null
? func(nullable)
: null;
};
function andThen(func, nullable) {
return arguments.length === 1
? function (nullable_) { return andThenHelper(func, nullable_); }
: andThenHelper(func, nullable);
}
var apHelper = function (targetNullable, applicativeNullable) {
return (targetNullable !== undefined && targetNullable !== null)
&& (applicativeNullable !== undefined && applicativeNullable !== null)
? applicativeNullable(targetNullable)
: null;
};
function ap(targetNullable, applicativeNullable) {
return arguments.length === 1
? function (applicativeNullable_) { return apHelper(targetNullable, applicativeNullable_); }
: apHelper(targetNullable, applicativeNullable);
}
exports.Nullable = {
andThen: andThen,
ap: ap,
isNone: isNone,
isSome: isSome,
map: map,
maybe: maybe,
withDefault: withDefault,
};
//# sourceMappingURL=index.js.map