好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

TypeScript 及类型库 tsd typings @types/XXX 入门

 TypeScript入门基本相当于一门和C#语言的东西了,比较漫长的入门过程。

最大的一个门槛,就是 TypeScript 最后编译成 JavaScript。调用别人的库也是用 JavaScript 方式存在的。

TypeScript和JavaScript的协作就需要.d.ts文件了。

查看已经安装的包

npm ls -g --depth 0

tsd本来是安装类型文件的,废弃了,建议typings

typings也废弃了,建议用这样的格式安装 

npm install --save @types/node

使用例子

我们通过给node增加类型包来举例,开发一个继承EventEmitter的类的例子。

npm install --save @types/node

这个@types是一个npm发布用户的意思。

涉及文件 .vscode/launch.json、.vscode/tasks.json、package.json、.package-lock.json、tsconfig.json 等

参考 

压缩包下载

launch.json  (VSCode菜单Debug -> Add Configuration)

 {
      //   For more information, visit:   https://go.microsoft.com/fwlink/?linkid=830387 
     "  version  " :  "  0.2.0  "  ,
      "  configurations  "  : [
        {
              "  type  " :  "  node  "  ,
              "  request  " :  "  launch  "  ,
              "  name  " :  "  Launch Program  "  ,
              "  program  " :  "  ${workspaceFolder}\\bin\\index.js  "  ,
              //  "preLaunchTask": "build ts",
              //  "cwd": "${workspaceFolder}/./bin",    //  修改执行node index.js 的路径 
             "  console  " :  "  internalConsole  " ,        //  输出到 DEBUG CONSOLE (默认值) 
             "  internalConsoleOptions  " :  "  openOnSessionStart  " ,   //  每次运行自动转到 DEBUG CONSOLE 以显示输出内容 
             "  outFiles  "  : [
                  "  ${workspaceFolder}/**/*.js  "  
            ]
        }
    ]
} 

 

tasks.json  (VSCode菜单 Terminal -> Configure Default Build Task)

 {
      //   See   https://go.microsoft.com/fwlink/?LinkId=733558 
     "  version  " :  "  2.0.0  "  ,
      "  tasks  "  : [
        {
              "  label  " :  "  build ts  "  ,
              "  type  " :  "  typescript  "  ,
              "  tsconfig  " :  "  tsconfig.json  "  ,
              "  problemMatcher  "  : [
                  "  $tsc  "  
            ],
              "  group  "  : {
                  "  kind  " :  "  build  "  ,
                  "  isDefault  " :  true  
            }
        }
    ]
} 

 

package-lock.json

package.json  (npm init 和 npm install npm install --save @types/node)

tsconfig.json  (tcs -init)

 {
    "  compilerOptions  "  : {
      "  target  " :  "  es5  " ,                           /*   Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'.   */ 
     "  module  " :  "  umd  " ,                      /*   Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'.   */ 
     "  outDir  " :  "  bin  " ,                         /*   Redirect output structure to the directory.   */ 
     "  strict  " :  true ,                            /*   Enable all strict type-checking options.   */ 
     "  sourceMap  " :  true  ,
      //  "baseUrl": "ts",    //  不要这个设置,会导致自动生成的import语句缺少./部分,运行时报找不到模块出错
      //  "esModuleInterop": true,
      //  "moduleResolution": "node" 
     }
} 

 

ts/index.ts  实现源码

console.log( "  执行路径:   "  +  process.cwd());

  //  CTRL + Shift + Y 显示 DEBUG CONSOLE 
 
import { EventEmitter } from   "  events  "  ;
import { N1 } from   "  ./utils  "  ;

class MyEmitter extends EventEmitter
{

}

let my  =  new MyEmitter();
my.on(  "  abc  " , (a1, a2)=> {
    console.log(  "  event,   "  + a1 +  "  ,   "  + a2 +  "  ,   "  +  new Date());
});

my.emit(  "  abc  " ,  "  第一个参数  " ,  "  第二个参数  "  );

let r  = N1.C1.Add1( 10 ,  20  );

console.log(r); 

 

ts/utils.ts

 export namespace N1
{
    export class C1
    {
        public static Add1(a:number, b:number)
        {
            return a  *  10  + b *  100  ;
        }
    }
} 

 

 

查看更多关于TypeScript 及类型库 tsd typings @types/XXX 入门的详细内容...

  阅读:46次