TypeScript Academy · Oppitunti

Päästä päähän ulottuva tyyppiturvallisuus: schema first -työnkulku

Säilyttäkää yksi totuuden lähde skeemasta asiakkaalle asti

Oppitunti 4/413 vaihetta

Päästä päähän ulottuva tyyppiturvallisuus: schema first -työnkulku on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu TypeScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.

Mitä schema-first tarkoittaa

Schema-first tarkoittaa, että GraphQL-skeema on ainoa totuuden lähde. Käyttöliittymän tyypit, backendin resolverit ja API-sopimukset johdetaan kaikki siitä — näin mikään kerros ei pääse erkaantumaan muista.

# The workflow:
# 1. Define schema (.graphql or SDL)
# 2. Generate server resolver types
# 3. Generate client operation types
# 4. Both sides automatically stay in sync

Skeeman määrittäminen

Kirjoittakaa GraphQL-skeemanne SDL-muodossa (.graphql-tiedostoihin) ja tallentakaa se repositorioon asiakkaan ja palvelimen välisenä sopimuksena.

# schema.graphql
type User {
  id: ID!
  name: String!
  email: String!
}

type Query {
  user(id: ID!): User
}

Palvelin: resolver-tyyppien luominen

Suorittakaa codegen typescript-resolvers-lisäosan kanssa luodaksenne skeemasta tyypitetyt resolver-signatuurit.

# Server codegen step
npx graphql-codegen --config codegen.server.yml

Asiakas: operaatiotyyppien luominen

Suorittakaa codegen typescript-operations-lisäosan sekä Apollo- tai urql-lisäosien kanssa luodaksenne tyypitetyt hookit .graphql-operaatiotiedostoista.

# Client codegen step
npx graphql-codegen --config codegen.client.yml

Rikkovien muutosten tunnistaminen

Käyttäkää graphql-inspector-työkalua tunnistaaksenne rikkovat skeemamuutokset, kuten kenttien poistot ja tyyppien muutokset, ennen kuin ne päätyvät tuotantoon.

npx graphql-inspector diff ./api/schema.graphql ./api/schema.new.graphql
# Reports: BREAKING: Field 'User.email' was removed

Skeemarekisteri

Skeemarekisteri, kuten Apollo Studio tai Hive, tallentaa skeemaversiot, seuraa muutoksia ajan mittaan ja ilmoittaa CI:ssä rikkovista muutoksista.

# Push schema to Apollo Studio:
npx apollo schema:push --endpoint https://api.example.com/graphql

Mock-data skeeman avulla

Käyttäkää skeemaa mock-datan luomiseen asiakasohjelman kehitystä varten ilman oikeaa palvelinta ja pitäkää mockit skeeman mukaisina.

import { buildClientSchema, introspectionFromSchema } from "graphql";
import { addMocksToSchema } from "@graphql-tools/mock";
const schema = buildClientSchema(introspectionResult);
const mockedSchema = addMocksToSchema({ schema });

tRPC vaihtoehtona

Pelkästään TypeScriptiä käyttävissä projekteissa tRPC tarjoaa päästä päähän ulottuvan tyyppiturvallisuuden ilman skeemakieltä — palvelimen reitittimen tyyppi ON asiakkaan sopimus.

// Server: router infers types
const router = t.router({ getUser: t.procedure.query(() => fetchUser()) });
// Client: types flow automatically via inference
const { data } = trpc.getUser.useQuery();

Zod + tRPC validointiin

Yhdistäkää Zod-skeemat tRPC:n syötevalidaattoreihin saadaksenne ajonaikaisen validoinnin ja käännösaikaiset tyypit yhdestä määrittelystä.

const createUser = t.procedure
  .input(z.object({ name: z.string(), email: z.string().email() }))
  .mutation(({ input }) => saveUser(input));
// input: { name: string; email: string } — from Zod schema

CI: täydellinen skeeman tyyppiturvallisuusputki

Täydellinen CI-putki schema-first-tyyppiturvallisuudelle: skeeman linttaus → rikkovien muutosten tarkistus → codegenin suoritus → tyyppitarkistus → testien suoritus.

# .github/workflows/schema.yml
- run: npx graphql-inspector validate ...
- run: npx graphql-codegen --check
- run: npx tsc --noEmit
- run: npm test

Kertaus: schema-first-työnkulku

Schema-first TypeScriptissä: määritelkää SDL → luokaa palvelimen resolver-tyypit → luokaa asiakkaan operaatiotyypit → tunnistakaa rikkovat muutokset CI:ssä. Skeema on kaikkien tyyppiturvallisuuden kerrosten ainoa totuuden lähde.

Pikatarkistus

Mikä on GraphQL-skeeman tehtävä schema-first-työnkulussa?

Mitä opitte

Schema-first-TypeScript-työnkuluissa kaikki tyypit johdetaan GraphQL-skeemasta. Luokaa palvelimelle resolver-tyypit ja asiakkaalle operaatiotyypit, tunnistakaa rikkovat muutokset CI:ssä ja ylläpitäkää skeemaa kaikkien kerrosten välisenä sopimuksena.

Aloita maksutta

Opi TypeScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
101
Oppitunnit
352

Usein kysytyt kysymykset

Onko oppitunti ”Päästä päähän ulottuva tyyppiturvallisuus: schema first -työnkulku” ilmainen?

Kyllä – oppitunnin ”Päästä päähän ulottuva tyyppiturvallisuus: schema first -työnkulku” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko TypeScript Academy-kurssin, päivitä CoddyKit PROhon. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Päästä päähän ulottuva tyyppiturvallisuus: schema first -työnkulku”?

Säilyttäkää yksi totuuden lähde skeemasta asiakkaalle asti Harjoittelet TypeScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni TypeScript Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin TypeScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Päästä päähän ulottuva tyyppiturvallisuus: schema first -työnkulku”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä TypeScript Academy-oppitunnilla?

Kyllä. Jokainen TypeScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. GraphQL-skeemasta TypeScript-tyypeiksi
  2. Tyypitetyt resolverit GraphQL Code Generatorilla
  3. Tyypitetty GraphQL-asiakas Apollolla ja urql:llä
  4. Päästä päähän ulottuva tyyppiturvallisuus: schema first -työnkulku
← Takaisin: TypeScript Academy