Контракти & Кодо...

Проблема TS

тут зообразити граф як приходять типи з АПІ та рухаються по функціям

Статичний опис типів

Статичний опис типів

Type Guards

Social-api-lib

188 типів

Runtime types

Title Text

CodeShift

CodeShift alg

import Http from './Http'
import { Autocomplete } from '../types'

class ApiAutocomplete {
    getCountries(): Promise<Autocomplete.Res.AutocompCountries> {
        return Http.post('autocomplete/all-countries')
    }
}
import Http from './Http'
import { Autocomplete } from '../types'

type AutocompCountries = Autocomplete.Res.AutocompCountries

class ApiAutocomplete {
    getCountries(): Promise<Autocomplete.Res.AutocompCountries> {
        return Http.post('autocomplete/all-countries')
    }
}

ts-to-io

import * as t from "io-ts"

const AutocompCountries = t.array(t.type({
  country_code: t.string,
  id: t.number,
  id_geoname: t.number,
  text: t.string
}))
import Http from './Http'
import { Autocomplete } from '../types'
import report from '../reporter'

type AutocompCountries = Autocomplete.Res.AutocompCountries // сміття

class ApiAutocomplete {
    getCountries(): Promise<Autocomplete.Res.AutocompCountries> {
        return Http.post('autocomplete/all-countries')
            .then((data) => {
                import('../runtimeTypes/Autocomplete')
                    .then((t) => report(t.AutocompCountries, data))

                return data
            })
    }
}

export default new ApiAutocomplete()
import Http from './Http'
import { Autocomplete } from '../types'

class ApiAutocomplete {
    getCountries(): Promise<Autocomplete.Res.AutocompCountries> {
        return Http.post('autocomplete/all-countries')
    }
}

export default new ApiAutocomplete()

Контракти & Кодогенерація

By Kolya Koval

Контракти & Кодогенерація

  • 301