Jaké je nejlepší řešení pro systém správy definic typů (jako tsd) pro Typescript?
Pokud jde o používání TypeScriptu, musíme zvážit, jak řešit soubory s definicemi typů (*.d.ts).
Pokud vím, existuje několik systémů pro správu definic TypeScriptu, jak je uvedeno níže.
- tsd
- psaní
- @types
Asi je tsd ten nejstarší a to je původ. Ale proč musely typings vzniknout? Asi je tvorba souboru s definicemi pro typings trochu složitá.
A co vlastně @types je?
Tak co je nejlepší řešení v této záležitosti?
Odpověď č. 1
Příběh za ekosystémem správy typů kolem TypeScriptu je velmi rozsáhlý.
Nejprve zde byl (a stále je) monolitický repozitář nazvaný DefinitelyTyped, který sloužil jako centrum pro všechny vývojáře, kteří chtěli přispět svými typovými definicemi pro různé knihovny.
Kvůli tomuto úložišti existuje správce typů nazvaný tsd, který přímo získává typy z tohoto úložiště a ukládá je lokálně ve vašem projektu.
Mezitím repo DT překročilo své možnosti škálování a muselo být restrukturalizováno. Diskuse pokračovala ohledně toho, jak by měl soubor d.ts vypadat, takže v určitém bodě byla potřeba jiného způsobu začlenění typů do vašeho projektu. Dalším problémem bylo verzování knihoven a samotného TypeScript kompilátoru.
Pak v určitém okamžiku Blake Embrey vytvořil nový správce typů nazvaný typings, který podporoval DefinitelyTyped a nový navrhovaný způsob strukturování d.ts. Nová struktura umožňovala dva typy modulů - globální (většina z těch v DefinitelyTyped) a moduly, které mají být uzavřené.
Později byl společností Microsoft oznámen TypeScript 2.0 Beta. Tým za TypeScriptem si uvědomil potřebu jiného způsobu práce se soubory typů. To, co udělali, byl npm scope @types, o kterém oznámili, že bude novým způsobem práce s typy. V této době @types funguje pouze s TypeScript 2.0.
Deklarační soubory (.d.ts soubory) jsou základní součástí používání existujících JavaScript knihoven v TypeScriptu, ale jejich získávání bylo vždy oblastí, kde jsme věděli, že je prostor pro zlepšení. Jak se blížíme k TypeScriptu 2.0, jsme velmi nadšení, že můžeme ukázat náhled našeho plánu, jak věci zjednodušit. Získávání typových deklarací v TypeScriptu 2.0 nebude vyžadovat žádné nástroje kromě npm.
Takže k odpovědi na vaši otázku :
Pokud používáte TypeScript nižší než v2.0, použijte typings, ale pokud používáte 2.0, použijte @types