typescript - What is behind the ‘@’ sign in @angular or @types? -


i trying understand behind ‘@’ sign when see import statements below:

import { injectable } ‘@angular/core’; 

or npm cli commands below:

npm -install –save @types/lodash 

the statements or commands working fine me, want learn happening behind scene of @ sign.

is '@' typescript feature? or npm thing?

a pointer in-depth online documentation great help.

it's npm thing called scoped packages. here official doc:

scopes namespaces npm modules. if package's name begins @, scoped package. scope in between @ , slash.

all scoped packages stored inside folder begins @. example, angular packages stored inside @angular folder in node_modules, whereas if there no @ scoped identifier , used angular/core , angular/compiler have separate folder each package. , same holds @types package.

how typescript import statement recognizes or integrates '@'?

the require function used node can traverse node_modules folder if use forward slash in path , it's not limited scoped packages:

node_modules          b          index.js          module.exports = 3;  m.js    console.log(require('a/b')); // logs 3 

typescript compiler uses node's statsync function under hood check folder:

function filesystementryexists(path, entrykind) {     try {         var stat = _fs.statsync(path);         switch (entrykind) {             case 0 /* file */: return stat.isfile();             case 1 /* directory */: return stat.isdirectory();         }     }     catch (e) {         return false;     } } 

and naturally function treats forward slash path separator. when resolving path typescript compiler prepends node_modules path if node module resolution strategy set.


Comments

Popular posts from this blog

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

python Tkinter Capturing keyboard events save as one single string -

sql server - Why does Linq-to-SQL add unnecessary COUNT()? -