reactjs - Hva er forholdet mellom @material-ui/core og @types/material-ui?
Her ser jeg et eksempelprosjekt som bruker material-ui.
Jeg ser at jeg har følgende pakker inne i package.json-filen
{
...
"dependencies": {
"@material-ui/core": "^1.4.1",
...
},
"devDependencies": {
"@types/material-ui": "^0.20.6",
...
},
...
}
Etter npm install ser jeg følgende kataloger i prosjektmappen min
node_modules/@types/material-ui/
node_modules/@material-ui/core/
Her er mine spørsmål:
Jeg ønsket å forstå hvorfor material-ui bruker
@som en del av pakkenavnet sitt, er det sant at denne typen pakkenavn betyr at det er en TS-pakke? Altså, at den i seg selv inneholder typeinformasjonen.Hvis det ovenstående er sant, er det sant at
/@types/material-ui/ikke trengs i det hele tatt?
Svar #1
@ i pakkenavnet betyr ikke at det er en TypeScript-pakke; vanlige JavaScript-pakker kan også ha @-prefikset.
Prefikset @ betyr at dette er en omfattende pakke; det vil si at det finnes en familie av pakker under @material-ui/ samt under @types/.
I dette spesifikke tilfellet inneholder @material-ui/core sine egne typedefinisjoner (*.d.ts-filer), så @types/material-ui er ikke nødvendig og vil faktisk ikke bli brukt. Generelt er @types/-pakker nødvendig for vanlige JavaScript-pakker som ikke inneholder noen typedefinisjoner selv.