TypeScript Academy · Oppitunti

Tyyppiutilitykirjaston julkaiseminen

Paketoikaa ja jakakaa omia utility-tyyppejä npm:ssä

Oppitunti 4/413 vaihetta

Tyyppiutilitykirjaston julkaiseminen 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.

Mikä on tyyppiutilitykirjasto

Tyyppiutilitykirjasto vie ainoastaan TypeScript-tyyppejä, ei ajonaikaista koodia. Suosittuja esimerkkejä ovat type-fest, ts-essentials ja utility-types.

// A type utility library exports types like:
export type DeepPartial<T> = T extends object
  ? { [K in keyof T]?: DeepPartial<T[K]> }
  : T;

Projektin rakenne

Pidä rakenne yksinkertaisena: käytä yhtä src/index.ts-tiedostoa, joka vie kaikki utilityt uudelleen, ja määritä tsconfig.json tuottamaan vain tyyppimääritykset.

// tsconfig.json
{
  "compilerOptions": {
    "declaration": true,
    "emitDeclarationOnly": true,
    "outDir": "dist",
    "strict": true
  }
}

package.json vain tyyppejä sisältävälle paketille

Aseta main- ja types-kentät osoittamaan tyyppimäärityksiin. Aseta sideEffects: false puun karsintaa varten.

{
  "name": "@myorg/type-utils",
  "version": "1.0.0",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "sideEffects": false,
  "files": ["dist"]
}

Tyyppimääritysten generointi

Suorita tsc, jotta .d.ts-tiedostot tuotetaan. Vain tyyppejä sisältävässä kirjastossa JavaScript-tuloste on tyhjä tai minimaalinen.

# Build declarations
npx tsc
# dist/index.d.ts is generated

Versiointi ja muutoslokit

Noudattakaa semanttista versiointia: yhteensopivuutta rikkovat tyyppimuutokset ovat major-muutoksia, uudet apuohjelmat minor-muutoksia ja korjaukset patch-muutoksia.

# Bump version
npm version minor
# Generate changelog with conventional-changelog or changesets

Julkaiseminen npm:ään

Käyttäkää komentoa npm publish tai pnpm publish. Jos julkaistavat scoped-paketit kuuluvat organisaatiolle, varmistakaa, että olette kirjautuneena sisään ja scope on määritetty.

npm login
npm publish --access public
# or for private: npm publish --access restricted

TypeScript-versioiden yhteensopivuus

Dokumentoikaa apuohjelmienne edellyttämä TypeScriptin vähimmäisversio. Rekursiiviset ehdolliset tyypit edellyttävät versiota TS 4.1 tai uudempaa, ja Awaited on sisäänrakennettu TS 4.5:stä alkaen.

// package.json peerDependencies
{
  "peerDependencies": {
    "typescript": ">=4.5"
  }
}

Tyyppien testaaminen tsd:llä

Kirjoittakaa tsd-paketin avulla tyyppitason testejä, jotka suoritetaan CI:ssä ja varmistavat apuohjelmienne toimivan oikein.

import { expectType } from "tsd";
import type { DeepPartial } from "@myorg/type-utils";

expectType<DeepPartial<{ a: { b: number } }>>({ a: {} });

Dokumentointi TSDocilla

Lisätkää tyypeillenne /** */-muotoiset JSDoc-kommentit. TSDocin kaltaiset työkalut luovat niiden perusteella API-dokumentaation.

/**
 * Makes all properties of T optional at every depth.
 * @example type A = DeepPartial<{ x: { y: number } }> // { x?: { y?: number } }
 */
export type DeepPartial<T> = ...

Monorepon jakelu

Julkaiskaa monorepossa types-paketti workspace-pakettina, jotta muut sovellukset käyttävät sitä komennon workspace:* kautta npm:n sijaan.

// Other package's package.json
{
  "dependencies": {
    "@myorg/type-utils": "workspace:*"
  }
}

Kertaus: tyyppikirjastojen julkaiseminen

Tyyppi-apukirjastossa asetetaan emitDeclarationOnly: true, tyypit viedään tiedostosta src/index.ts, versiointi tehdään semverin mukaisesti, testit kirjoitetaan tsd:llä, dokumentointi TSDocilla ja julkaisu tehdään npm:ään tai workspace-rekisteriin.

Pikatarkistus

Mikä tsconfig-asetus tuottaa vain .d.ts-tiedostoja ilman JavaScript-tulostetta?

Mitä opitte

Tyyppi-apukirjaston julkaiseminen edellyttää asetusta emitDeclarationOnly, asianmukaisia package.json-kenttiä, tyyppitason testejä tsd:llä, TSDoc-kommentteja ja semanttista versiointia. Jakakaa apuohjelmanne yhteisön kanssa tai monoreponne sisällä.

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 ”Tyyppiutilitykirjaston julkaiseminen” ilmainen?

Kyllä – oppitunnin ”Tyyppiutilitykirjaston julkaiseminen” 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 ”Tyyppiutilitykirjaston julkaiseminen”?

Paketoikaa ja jakakaa omia utility-tyyppejä npm:ssä 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 ”Tyyppiutilitykirjaston julkaiseminen”-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. DeepPartial ja DeepReadonly
  2. Flatten- ja UnwrapPromise-utilityt
  3. TupleToUnion ja UnionToIntersection
  4. Tyyppiutilitykirjaston julkaiseminen
← Takaisin: TypeScript Academy