
Security News
PEP 810 Proposes Explicit Lazy Imports for Python 3.15
An opt-in lazy import keyword aims to speed up Python startups, especially CLIs, without the ecosystem-wide risks that sank PEP 690.
@baileyherbert/types
Advanced tools
This package contains some lightweight types and interfaces that I commonly use across most of my projects.
npm install @baileyherbert/types
Action<T>
Delegate<T>
Fallback<T, F>
Json
JsonArray
JsonMap
Key<T>
Promisable<T>
Pull<T, K, F>
Type<T>
Value<T, K, F>
Action<T>
Represents a function that has no arguments and returns type T
(defaults to unknown
).
let fn: Action<boolean> = function() {
return true;
}
Delegate<T>
Represents a function that accepts any arguments and returns type T
(defaults to unknown
). This is most useful in
an environment with dependency injection.
let fn: Delegate<boolean> = function(...args: any[]) {
return true;
}
Fallback<T, F>
Returns T
if it's defined or F
otherwise.
Fallback<boolean, number>; // boolean
Fallback<undefined, number>; // number
Json
Represents data that can be serialized into or deserialized from a JSON string.
let age: Json = 32;
let name: Json = 'John Doe';
let skills: Json = [
'Programming',
'Engineering',
'Architecture'
];
JsonArray
Represents an array that can be serialized into or deserialized from a JSON string.
let arr: JsonArray = [
'Text',
123456,
{
value: true
}
]
JsonMap
Represents an object that can be serialized into or deserialized from a JSON string.
let profile: JsonMap = {
name: 'John Doe',
age: 32,
skills: [
'Programming',
'Engineering',
'Architecture'
]
}
Key<T>
Extracts and returns the key names of object T
. When T
is undefined, a generic string
type will be returned
instead, allowing any key name to be specified.
This can be used to implement type safety and autocompletion with consumer interfaces, while allowing any input when an interface is not specified.
type Map = {
first: boolean;
second: string;
};
type Keys = Key<Map>; // 'first' | 'second'
Promisable<T>
Returns type T
optionally joined with Promise<T>
.
Promisable<void>; // void | Promise<void>
Pull<T, K, F>
Extracts the value of key K
from object T
if the value is defined.
This is identical to Value<T, K, F>
except it also checks that the value of T[K]
is set and allows you to fall back
to another value if not.
type Map = {
first: boolean;
second: undefined;
};
type A = Value<Map, 'first', unknown>; // boolean
type B = Value<Map, 'second', unknown>; // unknown
Type<T>
Returns a type that represents the constructor of class T
.
class Foo {}
const constructor: Type<Foo> = Foo;
Value<T, K, F>
Extracts the value of key K
from the given object T
. The key must be derived from Key<T>
.
When T
is undefined, the optional type F
will be returned instead. This can be used to accept any input when an
interface is not available.
type Map = {
value: boolean;
};
type A = Value<Map, 'value', unknown>; // boolean
type B = Value<undefined, 'value', unknown>; // unknown
FAQs
A collection of useful types for my TypeScript projects.
We found that @baileyherbert/types demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
An opt-in lazy import keyword aims to speed up Python startups, especially CLIs, without the ecosystem-wide risks that sank PEP 690.
Security News
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.