Лучший способ извлечь подтипы из строки JSON в Typescript - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь найти лучший способ извлечь подтипы из строки JSON. Например, скажем, вы получили следующий ответ от сервера:

{
  "isEnabled": true,
  "alpha": 1.0,
  "backgroundColor": "#ffffff",
  "clipToBounds": false,
  "text": "A random lorem epsum",
  "textAlignment": "left",
  "font": "Sans Serif",
  "fontSize": 16.0,
  "cornerRadius": 4.0,
  "shadowColor": "#000000",
  "shadowRadius": 2.0,
  "shadowOffsetY": 2.0,
  "shadowOffsetX": 0.0,
  "border": 2.0,
  "borderColor": "#444444"
}

Я хотел бы извлечь приведенную выше строку JSON в следующие типы в Typescript:

interface CornerRadiusStyle {
  cornerRadius: number
}

interface ShadowStyle {
  shadowColor: string 
  shadowRadius: number
  shadowOffsetX: number 
  shadowOffsetY: number 
}

interface BorderStyle {
  border: number 
  borderColor: string 
}

interface LayerStyle {
  cornerRadiusStyle: CornerRadiusStyle
  shadowStyle: ShadowStyle
  borderStyle: BorderStyle 
}

interface Style {
  backgroundColor: string 
  clipToBounds: boolean 
  layerStyle: LayerStyle 
}

interface View {
  style: Style
  isEnabled: boolean
  alpha: number
}

interface TextStyle {
  textAlignment: string 
  font: string 
  fontSize: number 
}

interface Label extends View {
  text: string 
  textStyle: TextStyle
}

Таким образом, вы в конечном итоге сможете сделать следующее:

const label: Label = JSON.parse(/* customized parsing */);
const textStyle = label.textStyle;
const text = label.text;
const style = label.style;
const alpha = label.alpha;

Как я могу go выполнить это? Я использовал revivers, но он все еще выглядит как запутанный процесс, и я надеялся, что некоторые из присутствующих здесь экспертов могли бы пролить свет на более простой и краткий процесс, чтобы сделать это :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...