@guanghechen/types
v2.2.0
Published
Common type definitions for @guanghechen packages
Readme
Common type definitions for @guanghechen packages. Provides shared interfaces and types for disposable resources, error handling, path resolution, and pub-sub patterns.
Install
npm
npm install --save-dev @guanghechen/typesyarn
yarn add --dev @guanghechen/types
Usage
Disposable Types
import type { IDisposable, IBatchDisposable } from '@guanghechen/types'
// IDisposable - Resource cleanup interface
class Connection implements IDisposable {
disposed = false
dispose(): void {
this.disposed = true
// cleanup logic
}
}
// IBatchDisposable - Manage multiple disposables
class ResourceManager implements IBatchDisposable {
disposed = false
registerDisposable<T extends IDisposable>(disposable: T): void {
// register for batch disposal
}
dispose(): void {
// dispose all registered resources
}
}Error Types
import type { ISoraError, ISoraErrorCollector } from '@guanghechen/types'
import { ErrorLevelEnum } from '@guanghechen/types'
const error: ISoraError = {
from: 'my-module',
level: ErrorLevelEnum.ERROR,
details: new Error('Something went wrong')
}
// ErrorLevelEnum: WARN = 4, ERROR = 5, FATAL = 6Path Types
import type { IPathResolver, IWorkspacePathResolver } from '@guanghechen/types'
// IPathResolver methods:
// - basename, dirname, join, normalize, relative
// - isAbsolute, ensureAbsolute
// - isSafeRelative, ensureSafeRelative, safeRelative, safeResolve
// IWorkspacePathResolver - Workspace-scoped path operations:
// - root, pathResolver
// - isSafePath, ensureSafePath
// - relative, resolveResource Types
import type { IResource, ITextResource } from '@guanghechen/types'
// IResource<T> - Async resource operations
// - exists(): Promise<boolean>
// - load(): Promise<T | undefined>
// - save(data: T): Promise<void>
// - destroy(): Promise<void>
// ITextResource = IResource<string>Subscriber Types
import type {
ISubscriber,
ISubscribable,
ISubscribers,
IUnsubscribable
} from '@guanghechen/types'
// ISubscriber<T> - Receives notifications, extends IDisposable
// ISubscribable<T> - Can be subscribed to
// IUnsubscribable - Can unsubscribe from notifications
// ISubscribers<T> - Manages multiple subscribersUtility Types
import type { Diff, Mutable, PickPartial, PromiseOr } from '@guanghechen/types'
// Diff<T, U> - Remove properties in U from T
type OnlyInA = Diff<{ a: 1; b: 2 }, { b: 2 }> // { a: 1 }
// Mutable<T> - Remove readonly from all properties
type MutableUser = Mutable<{ readonly name: string }> // { name: string }
// PickPartial<T, K> - Make specific properties optional
type PartialName = PickPartial<{ name: string; age: number }, 'name'>
// { name?: string; age: number }
// PromiseOr<T> - Value or Promise of value
type MaybeAsync = PromiseOr<string> // string | Promise<string>