TypeScript Academy · Oppitunti

Tyypittämättömien kolmannen osapuolen kirjastojen käsittely

Käyttäkää @types-paketteja ja kirjoittakaa omat declaration-määrittelyt

Oppitunti 4/413 vaihetta

Tyypittämättömien kolmannen osapuolen kirjastojen käsittely 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.

Ongelma: puuttuvat tyypit

Jotkin npm-paketit eivät sisällä TypeScript-määrityksiä, eikä niille ole @types/-pakettia. TypeScript käsittelee ne oletusarvoisesti tyyppinä any, jolloin rajapinnan tyyppiturvallisuus menetetään.

import legacyLib from "untyped-lib"; // legacyLib: any

@types-paketit

DefinitelyTyped-projekti tarjoaa yhteisön ylläpitämiä tyyppimäärityksiä tuhansille kirjastoille. Etsikää npm:stä pakettia @types/library-name.

npm install --save-dev @types/lodash
npm install --save-dev @types/express
# Now lodash and express have full TypeScript types

Määritystiedoston kirjoittaminen (.d.ts)

Jos @types-pakettia ei ole saatavilla, kirjoittakaa projektiinne minimaalinen määritystiedosto, jossa moduuli ja sen tyypit määritellään.

// src/types/untyped-lib.d.ts
declare module "untyped-lib" {
  export function doSomething(x: string): number;
  export const version: string;
}

Moduulin laajentaminen

Laajentakaa olemassa olevia kolmannen osapuolen tyyppejä lisäämällä omat määrityksenne olemassa olevaan moduuliin ilman sen haarauttamista.

// Extend Express Request with a custom property
declare namespace Express {
  interface Request {
    user?: AuthUser;
  }
}

Jokerimerkilliset moduulimääritykset

Käyttäkää jokerimerkillisiä moduulimäärityksiä kokonaisten tyypittämättömien import-ryhmien, kuten resurssitiedostojen, käsittelyyn.

// src/types/assets.d.ts
declare module "*.svg" {
  const content: string;
  export default content;
}
declare module "*.json" {
  const value: Record<string, unknown>;
  export default value;
}

noImplicitAny ja tyypittämättömät kirjastot

Kun noImplicitAny: true on käytössä, tyypittämättömän moduulin tuominen aiheuttaa käännösvirheen. Käyttäkää määritystiedostoa tai poistakaa noImplicitAny käytöstä tiedostokohtaisesti merkinnällä // @ts-ignore.

// Quick fix for a single untyped import:
// @ts-ignore
import untypedLib from "untyped-lib";

Osallistuminen DefinitelyTypediin

Jos kirjoitatte laadukkaat tyypit tyypittämättömälle kirjastolle, lähettäkää ne DefinitelyTyped-projektiin yhteisön hyödyksi.

# Fork DefinitelyTyped and add:
# types/your-library/index.d.ts
# types/your-library/package.json
# Submit a PR at github.com/DefinitelyTyped/DefinitelyTyped

any viimeisenä keinona

Kun ette saa tyyppejä nopeasti käyttöön, käyttäkää eksplisiittistä tyyppiä any ja kommenttia, jolla seuraatte syntynyttä velkaa. Tämä on parempi kuin implicit any, koska ratkaisu on tarkoituksellinen ja näkyvä.

// eslint-disable-next-line @typescript-eslint/no-explicit-any
const lib: any = require("untyped-lib"); // TODO: add types

skipLibCheck määritysten virheitä varten

Jos kolmannen osapuolen .d.ts-tiedostossa on sisäisiä virheitä, skipLibCheck: true vaimentaa ne vaikuttamatta omien tyyppienne tarkistukseen.

{
  "compilerOptions": {
    "skipLibCheck": true
  }
}

Tyyppikääreet turvattomille kirjastoille

Kirjoittakaa tyypitetty kääremoduuli tyypittämättömän kirjaston ympärille, jotta any pysyy rajattuna ja muulle koodikannalle tarjotaan turvallinen tyypitetty rajapinta.

// src/lib/safe-legacy.ts
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const raw: any = require("untyped-lib");
export function doSomething(x: string): number { return raw.doSomething(x); }

Kertaus: tyypittämättömät kirjastot

Käsitelkää tyypittämättömät kirjastot seuraavasti: tarkistakaa ensin @types/-paketit, kirjoittakaa minimaaliset määritystiedostot, käyttäkää moduulin laajennusta ja tyypitettyjä kääreitä sekä hyödyntäkää skipLibCheck-asetusta riippuvuuksien määritysvirheisiin.

Pikatarkistus

Mistä kannattaa ensimmäiseksi etsiä tyypittämättömän npm-paketin tyyppimäärityksiä?

Mitä opitte

Tyypittämättömät kirjastot: tarkistakaa @types/-paketit, kirjoittakaa määritystiedostoja, laajentakaa olemassa olevia tyyppejä, käyttäkää jokerimerkkisiä moduulimäärityksiä, kätkekää turvattomat kirjastot tyypitettyjen julkisivujen taakse ja käyttäkää skipLibCheck-asetusta riippuvuuksien virheisiin.

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 ”Tyypittämättömien kolmannen osapuolen kirjastojen käsittely” ilmainen?

Kyllä – oppitunnin ”Tyypittämättömien kolmannen osapuolen kirjastojen käsittely” 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 ”Tyypittämättömien kolmannen osapuolen kirjastojen käsittely”?

Käyttäkää @types-paketteja ja kirjoittakaa omat declaration-määrittelyt 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 ”Tyypittämättömien kolmannen osapuolen kirjastojen käsittely”-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. Migraation aloittaminen: allowJs ja checkJs
  2. JSDoc-tyyppimerkinnät siltana
  3. Tiedosto kerrallaan -muunnosstrategia
  4. Tyypittämättömien kolmannen osapuolen kirjastojen käsittely
← Takaisin: TypeScript Academy