Тип утилиты для JSON версии существующего типа? JSON<SomeExistingType> - PullRequest
0 голосов
/ 21 июня 2020

существует любой тип утилиты, который мог бы это сделать?

const foo: Foo = { ... }
const bar: string = JSON.stringify(foo)
const baz: JSON<Foo> = JSON.parse(foo)

JSON<Foo> будет иметь все те же свойства, что и Foo, но со всеми изменениями , что JSON.stringify делает

1 Ответ

0 голосов
/ 21 июня 2020

похоже, это в значительной степени то, что я искал https://github.com/microsoft/TypeScript/issues/1897

type Json =
  | null
  | boolean
  | number
  | string
  | Json[]
  | { [prop: string]: Json };

type JsonCompatible<T> = {
  [P in keyof T]: T[P] extends Json
    ? T[P]
    : Pick<T, P> extends Required<Pick<T, P>>
    ? never
    : T[P] extends (() => any) | undefined
    ? never
    : JsonCompatible<T[P]>;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...