市场夺宝奇兵
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

13 lines
504 B

  1. import { JSONValue } from './types.js';
  2. export interface CustomTransfomer<I, O extends JSONValue> {
  3. name: string;
  4. isApplicable: (v: any) => v is I;
  5. serialize: (v: I) => O;
  6. deserialize: (v: O) => I;
  7. }
  8. export declare class CustomTransformerRegistry {
  9. private transfomers;
  10. register<I, O extends JSONValue>(transformer: CustomTransfomer<I, O>): void;
  11. findApplicable<T>(v: T): CustomTransfomer<T, JSONValue> | undefined;
  12. findByName(name: string): CustomTransfomer<any, any>;
  13. }