javascript - Typescript. Er triple-skråstrek-referanser fortsatt nødvendig når man bruker "import from"


I gamle versjoner av Typescript var det nødvendig å legge til den kjente

/// <reference

etikett for å legge til de nødvendige referansene. Nå etter versjon 1.6 kan vi importere avhengigheter ved å bruke den anbefalte ES6-måten

import Greeter from "./greeter";

Jeg har lest en stund, men det er fortsatt ikke klart for meg om og hvorfor trefeltsreferansene må unngås helt eller ikke.

Forresten. Vil kompilereren nå vite i hvilken rekkefølge den må kompilere TS-filene hvis vi bruker filesGlob i stedet for files i tsconfig.json?

Svar #1

Først og fremst, jeg tror ikke filesGlob er offisielt støttet ennå: https://github.com/Microsoft/TypeScript/issues/1927

Når det gjelder trippel skråstrek-referansen, er det ikke nødvendig så lenge alt er referert i files i tsconfig.json.

Du vil oppdage at hvis du bruker et verktøy som tsd eller typings for å håndtere typedefinisjoner for dine eksterne biblioteker, vil de lage en enkelt fil som du inkluderer i tsconfig.json; den enkeltfilen vil bruke trippel skråstrek-referanser for å inkludere resten av filene.

Du kan finne mer informasjon om triple slash-referanser i TypeScript-håndboken

Svar #2

Når vi bruker interne moduler/områdenavn trenger vi ///<reference for å fortelle kompilatoren hva som avhenger av hva, for å bygge en avhengighetsgraf og sortere filene i riktig rekkefølge.

ES6-måten du beskriver er (eksterne) moduler, se https://github.com/Microsoft/TypeScript/issues/2242. Som sådan er rekkefølgen for sammenkjedning ikke relevant siden disse lastes asynkront.

Så ved bruk av ES6-moduler, trenger du ikke ///<references.

Når det gjelder fileGlobs, er dette ikke implementert i TypeScript (ennå), men selv når det blir det, tror jeg det er usannsynlig at det vil endre noe på avhengighetsoppløsningen av filene i prosjektet. Selv i atom-typescript, hvor de implementerer fileGlobs, er de veldig prinsipielle mot kode som "avhenger av noen form for JS-rekkefølge" og de støtter det ikke på annen måte enn å manuelt ordne filene i tsconfig.json.

Relaterte artikler