Typescript常见面试题
Typescript常见⾯试题
1、什么是Typescript?
TypeScript是⼀种由微软开发和维护的免费开源编程语⾔。它是⼀个强类型的JavaScript超集,可编译为纯JavaScript。它是⼀种⽤于应⽤级JavaScript开发的语⾔。对于熟悉c#、Java和所有强类型语⾔的开发⼈员来说,TypeScript⾮常容易学习和使⽤。
TypeScript可以在任何浏览器、主机和操作系统上执⾏。TypeScript不是直接在浏览器上运⾏的。它需要⼀个编译器来编译和⽣成JavaScript⽂件。TypeScript是带有⼀些附加特性的ES6 JavaScript版本。
2、TypeScript和JavaScript有什么不同?
TypeScript与JavaScript的区别如下:
编号JavaScript TypeScript
1它是由⽹景公司在1995年开发的。它是2012年由安德斯·海尔斯伯格(Anders Hejlsberg)开发的。
2JavaScript源⽂件在”。js”扩展。TypeScript源⽂件是”.ts”扩展名。
3JavaScript不⽀持ES6。TypeScript ⽀持ES6。
4它不⽀持强类型或静态类型。它⽀持强类型或静态类型特性。
5它只是⼀种脚本语⾔。它⽀持⾯向对象的编程概念,如类、接⼝、继承、泛型等。
6JavaScript没有可选的参数特性。TypeScript有可选的参数特性。
7它是解释语⾔,这就是为什么它在运⾏时突出显⽰错误。它编译代码并在开发期间突出显⽰错误。
8JavaScript不⽀持模块。TypeScript⽀持模块。
9在这⾥,number和string是对象。在这⾥,number和string是接⼝。
10JavaScript不⽀持泛型。TypeScript⽀持泛型。
3、我们为什么需要TypeScript?
我们需要TypeScript:
TypeScript快速、简单,最重要的是,容易学习。
TypeScript⽀持⾯向对象的编程特性,⽐如类、接⼝、继承、泛型等等。
TypeScript在编译时提供了错误检查功能。它将编译代码,如果发现任何错误,它将在运⾏脚本之前突出显⽰这些错误。
TypeScript⽀持所有JavaScript库,因为它是JavaScript的超集。
TypeScript通过使⽤继承来⽀持可重⽤性。
TypeScript使应⽤程序开发尽可能的快速和简单,并且TypeScript的⼯具⽀持为我们提供了⾃动完成、类型检查和源⽂档。
TypeScript⽀持最新的JavaScript特性,包括ECMAScript 2015。
TypeScript提供了ES6的所有优点和更⾼的⽣产⼒。
TypeScript⽀持静态类型、强类型、模块、可选参数等。
4、列出Typescript的⼀些特性
Processing math: 100%
5、列出使⽤Typescript的⼀些优点?
TypeScript有以下优点。
它提供了可选静态类型的优点。在这⾥,Typescript提供了可以添加到变量、函数、属性等的类型。
Typescript能够编译出⼀个能在所有浏览器上运⾏的JavaScript版本。
TypeScript总是在编译时强调错误,⽽JavaScript在运⾏时指出错误。
TypeScript⽀持强类型或静态类型,⽽这不是在JavaScript中。
它有助于代码结构。
它使⽤基于类的⾯向对象编程。
它提供了优秀的⼯具⽀持和智能感知,后者在添加代码时提供活动提⽰。
它通过定义模块来定义名称空间概念。
6、Typescript的缺点是什么?
TypeScript有以下缺点:
TypeScript需要很长时间来编译代码。
TypeScript不⽀持抽象类。
如果我们在浏览器中运⾏TypeScript应⽤程序,需要⼀个编译步骤将TypeScript转换成JavaScript。
Web开发⼈员使⽤了⼏⼗年的JavaScript,⽽TypeScript不是都是新东西。
要使⽤任何第三⽅库,必须使⽤定义⽂件。并不是所有第三⽅库都有可⽤的定义⽂件。
类型定义⽂件的质量是⼀个问题,即如何确保定义是正确的?
7、 TypeScript的不同组件是什么?
TypeScript主要有三个组件。这些都是- –
语⾔language
该语⾔由新语法、关键字、类型注释等元素组成,允许我们编写TypeScript。
编译器compiler
TypeScript编译器是开源的、跨平台的,是⽤TypeScript编写的。它将⽤TypeScript编写的代码转换为JavaScript代码。它执⾏从TypeScript代码到JavaScript代码的解析和类型检查。它还可以帮助将不同的⽂件连接到单个输出⽂件,并⽣成源映射。
语⾔服务language service
语⾔服务提供信息,帮助编辑器和其他⼯具提供更好的辅助功能,如⾃动重构和智能感知。
8、Typescript是谁开发的,⽬前稳定的Typescript版本是什么?
typescript是由Anders Hejlsberg开发的,他也是c#语⾔开发团队的核⼼成员之⼀。typescript于2012年10⽉1⽇发布,被标记为0.8版。它是由Microsoft在Apache 2许可下开发和维护的。它是为开发⼤型应⽤程序⽽设计的。
⽬前稳定的TypeScript版本是3.2,于2018年9⽉30⽇发布。Typescript编译成简单的JavaScript代码,可以在任何⽀持ECMAScript 2015框架的浏览器上运⾏。它⽀持最新的和不断发展的JavaScript特性。
9、说说安装Typescript的最低要求。或者我们如何获得TypeScript并安装它?
TypeScript可以通过npm (node .js包管理器)在node的帮助下进⾏安装和管理。要安装TypeScript,⾸先要确保npm安装正确,然后运⾏以下命令在系统上全局安装TypeScript。
$ npm install -g typescript
它安装⼀个命令⾏代码“tsc”,它将进⼀步⽤于编译我们的Typescript代码。确保检查系统上安装的Typescript版本。
安装TypeScript需要以下步骤:
下载并运⾏节点的.msi安装程序。
输⼊命令“node -v”检查安装是否成功。
在终端窗⼝中输⼊以下命令安装Typescript: $ npm install -g Typescript
10、列出在Typescript中的内置类型
在Typescript中,内置的数据类型也称为原始数据类型。这些数据如下所⽰。
数字类型: ⽤于表⽰数字类型值。TypeScript中的所有数字都存储为浮点值。
语法: let标识符:number = value;
字符串类型: 它表⽰存储为Unicode UTF-16代码的字符序列。我们通过将字符串括在单引号或双引号中来在脚本中包含字符串。
语法: let标识符:字符串= ” “;
布尔类型: ⽤于表⽰逻辑值。当我们使⽤布尔类型时,我们只得到真或假的输出。布尔值是⼀个真值,它指定条件是否为真。
语法: let标识符:bool =布尔值;
Null类型: Null表⽰值未定义的变量。不能直接引⽤空类型值本⾝。空类型没有⽤处,因为我们只能为它分配⼀个空值。
语法: let num: number = null;
未定义类型: 它是未定义字⾯量的类型。未定义的类型表⽰所有未初始化的变量。它是没有⽤的,因为我们只能分配⼀个未定义的值给它。这种内置类型是所有类型的⼦类型。
语法: let num: number =未定义;
Void类型: Void是不返回任何类型值的函数的返回类型。如果没有可⽤的数据类型,则使⽤它。
语法: let unusable:void =未定义;
11、Typescript中的变量是什么?如何在Typescript中创建变量?
变量是存储位置,⽤于存储要被程序引⽤和使⽤的值/信息。它充当程序中值的容器。可以使⽤var关键字声明它。它应该在使⽤前声明。在Typescript中声明变量时,应该遵循某些规则-
变量名必须是字母或数字。
变量名不能以数字开头。
变量名不能包含空格和特殊字符,除了下划线(_)和美元($)符号。
我们可以通过以下四种⽅式之⼀声明⼀个变量:
在⼀条语句中声明类型和值。语法:var [identifier]: [type-annotation] = value;
声明没有值的类型。语法:var [identifier]: [type-annotation];
在没有类型的情况下声明它的值。语法:var [identifier] = value;
声明没有值和类型。语法:var(标识符);
12、如何编译Typescript⽂件?
下⾯是将Typescript⽂件编译成JavaScript时所遵循的命令。
$ tsc <TypeScript File Name>
例如,编译“hello .ts”。
$ tsc helloworld.ts
结果是helloworld.js。
13、是否可以将多个.ts⽂件合并成⼀个.js⽂件?如果是,那么如何做?
是的,有可能。为此,我们需要添加——outFILE [OutputJSFileName]编译选项。
$ tsc --outFile comman.js file1.ts file2.ts file3.ts
上⾯的命令将编译所有这三个.ts⽂件和结果将存储在⼀个comman.js⽂件中,在这种情况下,当我们不提供输出⽂件名像下⾯的命令。
$ tsc --outFile file1.ts file2.ts file3.ts
然后file2.ts和file3.ts将被编译,并将输出放在file1.ts中,现在是file1.ts包含JavaScript代码。
14、能否⾃动编译.ts⽂件,并实时修改.ts⽂件?
这是可以的,⾃动实时根据.ts⽂件变化⾃动编译.ts⽂件是可以的。这可以通过使⽤——watch compiler选项来实现
tsc --watch file1.ts
上⾯的命令⾸先编译file1为file1.js,并注意⽂件的变化,如果检测到任何更改,它将再次编译⽂件。这⾥,我们需要确保在使⽤——watch选项运⾏时命令提⽰符不能关闭。15、TS的接⼝是什么意思?参照TS来解释它们。
接⼝是在我们的应⽤程序中充当契约的结构。它定义了要遵循的类的语法,这意味着实现接⼝的类必须实现它的所有成员。它不能被实例化,但是可以被实现它的类对象引⽤。⽆论对象是否具有特定的结构,TypeScript编译器都使⽤接⼝进⾏类型检查(也称为“duck typing”鸭⼦类型或“结构化⼦类型”)。
语法:
interface interface_name {
// 字段声明
// ⽅法声明
}
接⼝只是声明⽅法和字段,它不能⽤来建造任何东西。不需要将接⼝转换为JavaScript来执⾏,它们对运⾏时JavaScript没有任何影响。因此,它们的唯⼀⽬的是在开发阶段提供帮助。
16、你如何理解Typescript中的类?列出类的⼀些特性。
我们知道,TypeScript是⼀种⾯向对象的JavaScript语⾔,⽀持OOP编程特性,⽐如类、接⼝等。与Java⼀样,类是⽤于创建可重⽤组件的基本实体。它是⼀组具有公共属性的对象。类是创建对象的模板或蓝图。它是⼀个逻辑实体。“class”关键字⽤于在Typescript中声明⼀个类。
例⼦:
class Student {
studCode: number;
studName: string;
constructor(code: number, name: string) {
this.studName = name;
this.studCode = code;
}
getGrade() : string {
return "A+" ;
}
}
类的特征是-
继承
封装
多态性
抽象
17、本地Javascript⽀持模块吗?
不。⽬前,本地JavaScript不⽀持模块。为了在Javascript中创建和使⽤模块,我们需要⼀个像CommonJS这样的外部模块。
18、TypeScript⽀持哪些⾯向对象的术语?
TypeScript⽀持以下⾯向对象的术语。
模块
接⼝
421事件是什么
继承
数据类型
成员函数
19、如何从TypeScript的⼦类调⽤基类构造函数?
super()函数的作⽤是: 从⼦类中调⽤⽗类或基类构造函数。
20、如何在TypeScript 中实现继承?
继承是⼀种从另⼀个类获取⼀个类的属性和⾏为的机制。它是OOPs 语⾔的⼀个重要⽅⾯,并且具有从现有类创建新类的能⼒,继承成员的类称为基类,继承这些成员的类称为派⽣类。
继承可以通过使⽤extend 关键字来实现。我们可以通过下⾯的例⼦来理解它。class Shape {        Area:number
constructor(area:number) {          this.Area = area      }    }
class Circle extends Shape {        display():void {
console.log("圆的⾯积: "+this.Area)        }    }
var obj = new Circle(320);    obj.display()
21、Typescript 中的模块是什么?
模块是创建⼀组相关变量、函数、类和接⼝等的强⼤⽅法。它可以在它们⾃⼰的范围内执⾏,⽽不是在全局范围内。换句话说,在模块中声明的变量、函数、类和接⼝不能在模块外部直接访问。创建⼀个模块
可以使⽤export 关键字创建模块,也可以在其他模块中使⽤import 关键字。module module_name{      class xyz{
export sum(x, y){              return x+y;          }      }  }
22、内部模块和外部模块有什么区别?
内部模块与外部模块的区别如下:
23、Typescript 中的名称空间是什么?如何在Typescript 中声明名称空间?
名称空间是⽤于对功能进⾏逻辑分组的⼀种⽅式。名称空间⽤于在内部维护typescript 的遗留代码。它封装了共享某些关系的特性和对象。名称空间也称为内部模块。名称空间还可以包括接⼝、类、函数和变量,以⽀持⼀组相关功能。
注意: 名称空间可以在多个⽂件中定义,并允许将每个⽂件都定义在⼀个地⽅。它使代码更容易维护。⽤于创建名称空间的语法
namespace <namespace_name> {              export interface I1 { }              export class c1{ }    }
24、解释在TypeScript 中的装饰器?
修饰符是⼀种特殊类型的声明,可以应⽤于类、⽅法、访问器、属性或参数。修饰符只是以@expression 符号为前缀的函数,其中表达式必须求值为⼀个函数,该函数将在运⾏时⽤有关修饰声明的信息调⽤。
TypeScript 装饰器以声明的⽅式将注释和元数据添加到现有代码中。装饰器是为ES7提出的⼀个实验性特性。它已经被⼀些JavaScript 框架使⽤,包括Angular 2。装饰器在未来的版本中可能会改变。
要启⽤对decorator 的实验⽀持,我们必须在命令⾏或在我们的tsconfig.json 中启⽤experimental aldecorators 编译器选项:命令⾏
$tsc --target ES5 --experimentalDecorators    tsconfig.json {
编号内部模块
外部模块
1内部模块⽤于将类、接⼝、函数和变量逻辑地分组到⼀个单元中,并可以导出到另⼀个模块中。外部模块⽤于隐藏模块定义的内部语句,并且只显⽰与声明的变量相关的⽅法和参数。
2内部模块在Typescript 的早期版本中。但是在最新版本的TypeScript 中使⽤名称空间仍然⽀持它们。外部模块在最新版本的TypeScript 中称为模块。
3内部模块是其他模块(包括全局模块和外部模块)的本地或导出成员。
外部模块是使⽤外部模块名称引⽤的单独加载的代码体。
4内部模块使⽤指定其名称和主体的moduledeclaration 来声明。
外部模块被编写为⼀个单独的源⽂件,其中包含⾄少⼀个导⼊或导出声明。
5
例⼦: module Sum { export function add(a, b) {console.log(“Sum: ” +(a+b)); } }
例⼦: export class Addition{ constructor(private x?: number, private y?: number){ } Sum(){ console.log(“SUM: ” +(this.x + this.y)); } }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。