define-accessor-property
Version:
Define an accessor property on an object. Will either throw, or fall back to assignment in loose mode, in an engine without descriptors.
24 lines (21 loc) • 585 B
TypeScript
type Getter<T> = () => T;
type Setter<T> = (value: T) => void;
declare function defineAccessorProperty(
obj: Record<PropertyKey, unknown>,
key: keyof typeof obj,
options: {
loose?: boolean;
nonConfigurable?: boolean | null;
nonEnumerable?: boolean | null;
} & (
| {
get: Getter<typeof obj[typeof key]>,
set?: Setter<typeof obj[typeof key]>,
}
| {
get?: Getter<typeof obj[typeof key]>,
set: Setter<typeof obj[typeof key]>,
}
)
): void;
export = defineAccessorProperty;