如何通过npm编译Typescript代码

Posted montai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过npm编译Typescript代码相关的知识,希望对你有一定的参考价值。

 

通过 npm 按安装的步骤:

1、安装 TypeScript npm 包:

$ npm install -g typescript

安装完成后我们就可以使用 TypeScript 编译器,名称叫 tsc,可将编译结果生成 js 文件。

要编译 TypeScript 文件,可使用如下命令:

tsc filename.ts

一旦编译成功,就会在相同目录下生成一个同名 js 文件,你也可以通过命令参数来修改默认的输出名称。

默认情况下编译器以ECMAScript 3(ES3)为目标但ES5也是受支持的一个选项。TypeScript增加了对为即将到来的ECMAScript 6标准所建议的特性的支持。

如下是ts的代码, 这里定义了sharp类, 并继承了sharp3D 和 sharp4D 两个子类

 1 //class.ts
 2 
 3 class Shape {
 4  
 5     area: number;
 6     color: string;
 7     text: string;
 8  
 9     constructor (public name: string, width: number, height: number ) {
10         this.area = width * height;
11         this.color = "pink";
12         this.text = ‘I am a 2D object:‘;
13     };
14  
15     shoutout() {
16         return this.text + this.color + " " + this.name +  " with an area of " + this.area + " cm squared.";
17     }
18 }
19 
20 class Shape3D extends Shape {
21  
22     volume: number;
23     
24  
25     constructor ( public name: string, width: number, height: number, length: number ) {
26         super( name, width, height );
27         this.volume = length * this.area;
28         this.text = ‘I am a 3D object:‘;
29     };
30  
31     shoutout() {
32         return this.text + this.name +  " with a volume of " + this.volume + " cm cube.";
33     }
34  
35     superShout() {
36         return super.shoutout();
37     }
38 }
39 
40 class Shape4D extends Shape3D {
41     
42     d4volume: number;
43     constructor ( public name: string, width: number, height: number, length: number, d4: number ){
44         super(name, width, height, length);
45         this.d4volume = d4 * this.volume;
46         this.text = ‘I am a 4D object‘;
47     };
48     
49     shoutout() {
50         return this.text + this.name +  " with a d4volume of " + this.d4volume + " cm d4cube.";
51     }
52     
53     superShout(){
54         return super.shoutout();
55     }
56 }
57 
58 var cube = new Shape3D("cube", 30, 30, 30);
59 console.log( cube.shoutout() );
60 console.log( cube.superShout());
61 
62 var d4cube = new Shape4D("d4cube", 30, 30, 30, 30);
63 console.log( d4cube.shoutout() );
64 console.log( d4cube.superShout() );

 

编译好的代码:

 1 //class.js
 2 var __extends = (this && this.__extends) || (function () {
 3     var extendStatics = function (d, b) {
 4         extendStatics = Object.setPrototypeOf ||
 5             ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
 6             function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
 7         return extendStatics(d, b);
 8     };
 9     return function (d, b) {
10         extendStatics(d, b);
11         function __() { this.constructor = d; }
12         d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13     };
14 })();
15 var Shape = /** @class */ (function () {
16     function Shape(name, width, height) {
17         this.name = name;
18         this.area = width * height;
19         this.color = "pink";
20         this.text = ‘I am a 2D object:‘;
21     }
22     ;
23     Shape.prototype.shoutout = function () {
24         return this.text + this.color + " " + this.name + " with an area of " + this.area + " cm squared.";
25     };
26     return Shape;
27 }());
28 var Shape3D = /** @class */ (function (_super) {
29     __extends(Shape3D, _super);
30     function Shape3D(name, width, height, length) {
31         var _this = _super.call(this, name, width, height) || this;
32         _this.name = name;
33         _this.volume = length * _this.area;
34         _this.text = ‘I am a 3D object:‘;
35         return _this;
36     }
37     ;
38     Shape3D.prototype.shoutout = function () {
39         return this.text + this.name + " with a volume of " + this.volume + " cm cube.";
40     };
41     Shape3D.prototype.superShout = function () {
42         return _super.prototype.shoutout.call(this);
43     };
44     return Shape3D;
45 }(Shape));
46 var Shape4D = /** @class */ (function (_super) {
47     __extends(Shape4D, _super);
48     function Shape4D(name, width, height, length, d4) {
49         var _this = _super.call(this, name, width, height, length) || this;
50         _this.name = name;
51         _this.d4volume = d4 * _this.volume;
52         _this.text = ‘I am a 4D object‘;
53         return _this;
54     }
55     ;
56     Shape4D.prototype.shoutout = function () {
57         return this.text + this.name + " with a d4volume of " + this.d4volume + " cm d4cube.";
58     };
59     Shape4D.prototype.superShout = function () {
60         return _super.prototype.shoutout.call(this);
61     };
62     return Shape4D;
63 }(Shape3D));
64 var cube = new Shape3D("cube", 30, 30, 30);
65 console.log(cube.shoutout());
66 console.log(cube.superShout());
67 var d4cube = new Shape4D("d4cube", 30, 30, 30, 30);
68 console.log(d4cube.shoutout());
69 console.log(d4cube.superShout());

 

以上是关于如何通过npm编译Typescript代码的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript NPM包的目标体系结构

如何使用 npm 脚本将 typescript 编译成 javascript,然后编译成 1 个文件

要求 NPM 下载 TypeScript 源代码,而不仅仅是 *.d.ts 文件

如何让 npm 从 GitHub url 安装 typescript 依赖项?

通过 npm 包共享 TypeScript 类型声明

如何让 TypeScript 以生成工作 Node.JS 代码的方式加载 PDF.js NPM 模块和 @types 绑定?