@msom/common
Version:
@msom/common
73 lines • 3.46 kB
TypeScript
import { Collection } from "../collection";
import { IPermission } from "../permission";
export declare function GeneratSymbolKey(key: string): symbol;
export declare function setGlobalData<T>(key: string, data: T): T;
export declare function getGlobalData(key: string): unknown;
export type Nullable = null | undefined;
export type createFunction<T extends unknown[]> = T extends [
...infer P,
infer R
] ? (...args: P) => R : never;
declare const propertyPermission: {
enumerable: number;
writable: number;
configurable: number;
};
export declare const PropertyPermission: {
new (permission?: number): {
permission: number;
readonly permissionState: {
enumerable: number;
writable: number;
configurable: number;
};
"__#1@#parsePermissions"<Ps extends ("enumerable" | "writable" | "configurable")[]>(permissions: Ps, force?: boolean): Ps;
has(...permissions: ("enumerable" | "writable" | "configurable")[]): boolean;
add(...permissions: ("enumerable" | "writable" | "configurable")[]): /*elided*/ any;
remove(...permissions: ("enumerable" | "writable" | "configurable")[]): /*elided*/ any;
get<Ps extends ("enumerable" | "writable" | "configurable")[]>(...permissions: Ps): { [k in Ps extends [] ? "enumerable" | "writable" | "configurable" : Ps[number]]: boolean; };
};
from(flag: number | IPermission<{
enumerable: number;
writable: number;
configurable: number;
}>): {
permission: number;
readonly permissionState: {
enumerable: number;
writable: number;
configurable: number;
};
"__#1@#parsePermissions"<Ps extends ("enumerable" | "writable" | "configurable")[]>(permissions: Ps, force?: boolean): Ps;
has(...permissions: ("enumerable" | "writable" | "configurable")[]): boolean;
add(...permissions: ("enumerable" | "writable" | "configurable")[]): /*elided*/ any;
remove(...permissions: ("enumerable" | "writable" | "configurable")[]): /*elided*/ any;
get<Ps extends ("enumerable" | "writable" | "configurable")[]>(...permissions: Ps): { [k in Ps extends [] ? "enumerable" | "writable" | "configurable" : Ps[number]]: boolean; };
};
};
/**
* @param target
* @param propKey
* @param permission 7
* * const enumerable = 0b100;
* * const writable = 0b010;
* * const configurable = 0b001;
* @param value
*/
export declare function defineProperty<T>(target: T, propKey: string | symbol, permission?: IPermission<typeof propertyPermission> | number, value?: unknown): void;
/**
* @param target
* @param propKey
* @param permission [0-5]
* * const configurable = 0b001;
* * const enumerable = 0b100;
* * 访问器属性修饰符无法设置writable
* @param getter
* @param setter
*/
export declare function defineAccesser<T, R>(target: T, propKey: symbol | string, permission?: IPermission<typeof propertyPermission> | number, getter?: () => R, setter?: (value: R) => void): void;
export declare function tryCall<F extends createFunction<[...unknown[], unknown]>>(call: F, data?: Parameters<F>, receiver?: unknown): ReturnType<F>;
export declare function equal(value: unknown, otherValue: unknown): boolean;
export declare function ownKeysAndPrototypeOwnKeys($events: object, keys?: Collection<PropertyKey>): Collection<PropertyKey>;
export {};
//# sourceMappingURL=index.d.ts.map