2015-11-27 2 views
1

Я хотел был бы иметь возможность использовать TypeScript для анализа объекта JSON и вывода интерфейса.Создать интерфейс (-ий) для JSON

То, что я пытаюсь сделать динамически для преобразования JSON как это:

{ 
    "foo": "some string value", 
    "bar": 5, 
    "baz": { 
    "a": "string" 
    }, 
    "baz2": { 
    "a": "string" 
    } 
} 

вызова функции, как это, что может или не может существовать:

typescript.doSomeMagic(objFromAbove); 
// or 
typescript.doSomeMagic(JSON.stringify(objFromAbove)); 

И есть его вывода интерфейса (или интерфейсов):

interface IProvidedName { 
    foo: string; 
    bar: number; 
    baz: { a: string; b: number; } 
    baz2: IBaz2; 
} 
interface IBaz2 { 
    a: string; 
} 

Я o k с либо форматом для baz, либо для baz2 выше.

В настоящее время я просматриваю модуль машинописного текста, который ищет функции вывода объекта.

+0

Я являюсь диковинки, чтобы знать, почему вы хотите это сделать? – Shyju

+0

Я хочу иметь возможность определять типы объектов, которые втягиваются в мое приложение через вызовы AJAX. У меня есть результаты JSON этих вызовов и вы не хотите вручную конвертировать JSON в интерфейс для каждой моей полезной нагрузки. – Brocco

+0

Не так ли 'tsc --declaration'? – zakki

ответ

3

В настоящее время я просматриваю модуль машинописного текста, который ищет функции вывода объекта.

Существует инструмент json2dts: http://xperiments.in/json2dts/

Ее также интегрированы в атом-машинописи: https://github.com/TypeStrong/atom-typescript/pull/466

+0

Это, безусловно, получает мяч, но хотелось бы увидеть улучшение в области массивов. '{foo: [{prop1: ''}, {prop1: '', prop2: ''}]}' => 'foo: {prop1: string; prop2 ?: string} [] 'будет идеальным – Brocco

+0

Самый быстрый способ поддержки: https://twitter.com/xperiments – basarat

Смежные вопросы