Tyyppiutilitykirjaston julkaiseminen
Paketoikaa ja jakakaa omia utility-tyyppejä npm:ssä
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 generatedVersiointi 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 changesetsJulkaiseminen 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 restrictedTypeScript-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ä.
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
- DeepPartial ja DeepReadonly
- Flatten- ja UnwrapPromise-utilityt
- TupleToUnion ja UnionToIntersection
- Tyyppiutilitykirjaston julkaiseminen