TypeScript怎样使用,能实现哪些功能
Admin 2022-09-05 群英技术资讯 490 次浏览
TypeScript 是近几年被火爆的应用了,这让大家产生了一个错觉:这么多的拥护者,难道TypeScript是一个新的语言?
TypeScript是微软公司开发和维护的一种面向对象的编程语言。它是JavaScript的超集,包含其所有元素。
TypeScript完全遵循OOPS的概念,在TSC(TypeScript编译器)的帮助下,我们可以将TypeScript代码(.ts文件)转换成JavaScript(.js文件)
TypeScript是JavaScript的超集
2010年,Anders Hejlsberg(TypeScript的创建者)开始在微软开发TypeScript,并于2012年向公众发布了TypeScript的第一个版本(TypeScript 0.8)。尽管TypeScript的发布受到了全世界许多人的称赞,但是由于缺少主要ide的支持,它并没有被JavaScript社区主要采用。
TypeScript的第一个版本(TypeScript 0.8)于2012年10月发布。
最新版本的Typescript(Typescript 3.0)于2018年7月发布,您可以在这里下载最新版本!
TypeScript包含一组非常好的面向对象编程(OOP)特性,这些特性有助于维护健壮和干净的代码;这提高了代码质量和可维护性。这些OOP特性使TypeScript代码非常整洁和有组织性。
例如:
class CustomerModel {
customerId: number;
companyName: string;
contactName: string;
country: string;
}
class CustomerOperation{
addCustomer(customerData: CustomerModel) : number {
// 添加用户
let customerId = 5;// 保存后返回的ID
return customerId;
}
}
TypeScript支持接口、泛型、继承和方法访问修饰符。
(1)接口
interface ITax {
taxpayerId: string;
calculateTax(): number;
}
class IncomeTax implements ITax {
taxpayerId: string;
calculateTax(): number {
return 10000;
}
}
class ServiceTax implements ITax {
taxpayerId: string;
calculateTax(): number {
return 2000;
}
}
(2)访问修饰符
class Customers{
public companyname:string;
private country:string;
}
显示一个公共变量和一个私有变量
(3)继承
class Employee{ Firstname:string;}class Company extends Employee { Department:string; Role:string private AddEmployee(){ this.Department="myDept"; this.Role="Manager"; this.FirstName="Test"; }}class Employee{
Firstname:string;
}
class Company extends Employee {
Department:string;
Role:string
private AddEmployee(){
this.Department="myDept";
this.Role="Manager";
this.FirstName="Test";
}
}
(4)泛型
function identity<T> (arg: T): T {
return arg;
}
// 显示泛型实现的示例
let output = identity <string>("myString");
let outputl = identity <number> (23);
(5)强/静态类型
TypeScript不允许将值与不同的数据类型混合。如果违反了这些限制,就会抛出错误。因此,在声明变量时必须定义类型,并且除了在JavaScript中非常可能定义的类型之外,不能分配其他值。
例如:
let testnumber: number = 6;
testnumber = "myNumber"; // 这将引发错误
testnumber = 5; // 这样就可以了
如果我们不遵循任何编程语言的正确语法和语义,那么编译器就会抛出编译时错误。在删除所有语法错误或调试编译时错误之前,它们不会让程序执行一行代码。TypeScript也是如此。
例如:
let isDone: boolean = false;
isDone = "345"; // 这将引发错误
isDone = true; // 这样就可以了
TypeScript是JavaScript的包装器,因此可以使用帮助类来减少代码。Typescript中的代码更容易理解。
接口、类等为代码提供可读性。由于代码是用类和接口编写的,因此更有意义,也更易于阅读和理解。
举例:
class Greeter {
private greeting: string;
constructor (private message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
JavaScript 代码:
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
Typescript与JavaScript库兼容,比如 underscore.js,Lodash等。它们有许多内置且易于使用的功能,使开发更快。
TypeScript代码由纯JavaScript代码以及特定于TypeScript的某些关键字和构造组成。
但是,编译TypeScript代码时,它会转换为普通的JavaScript。
这意味着生成的JavaScript可以与任何支持JavaScript的浏览器一起使用。
随着TypeScript代码基的增长,组织类和接口以获得更好的可维护性变得非常重要。
TypeScript模块允许您这样做。模块是代码的容器,可以帮助您以整洁的方式组织代码。
从概念上讲,您可能会发现它们类似于.NET命名空间。
例如:
module Company {
class Employee {
}
class EmployeeHelper {
targetEmployee: Employee;
}
export class Customer {
}
}
var obj = new Company.Customer();
Typescript是ES6的一个超集,所以ES6的所有特性它都有。另外还有一些特性,比如它支持通常称为lambda函数的箭头函数。ES6引入了一种稍微不同的语法来定义匿名函数,称为胖箭头(fat arrow)语法。
举例:
setTimeout(() => {
console.log("setTimeout called!")
}, 1000);
TypeScript在过去几年里越来越流行。也许TypeScript流行的决定性时刻是Angular2正式转换到TS的时候,这是一个双赢的局面。
它减少了诸如空处理、未定义等错误。强类型特性,通过适当的类型检查限制开发人员,来编写特定类型的代码。
TypeScript允许您定义重载函数。这样,您可以根据参数调用函数的不同实现。但是,请记住,TypeScript函数重载有点奇怪,需要在实现期间进行类型检查。这种限制是由于TypeScript代码最终被编译成纯JavaScript,而JavaScript不支持真正意义上的函数重载概念。
例如:
class functionOverloading{
addCustomer(custId: number);
addCustomer(company: string);
addCustomer(value: any) {
if (value && typeof value == "number") {
alert("First overload - " + value);
}
if (value && typeof value == "string") {
alert("Second overload - " + value);
}
}
}
在TypeScript中定义的类可以有构造函数。构造函数通常通过将默认值设置为其属性来完成初始化对象的工作。构造函数也可以像函数一样重载。
例如:
export class SampleClass{
private title: string;
constructor(public constructorexample: string){
this.title = constructorexample;
}
}
用TypeScript编写的代码很容易调试。
TypeScript始于JavaScript,止于JavaScript。Typescript采用JavaScript中程序的基本构建块。为了执行的目的,所有类型脚本代码都转换为其JavaScript等效代码。
例如:
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
JavaScript 代码:
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
TypeScript可以跨浏览器、设备和操作系统移植。它可以在JavaScript运行的任何环境中运行。与对应的脚本不同,TypeScript不需要专用的VM或特定的运行时环境来执行。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
排序算法是笔试中经常出现的,提起排序算法就一定要提下算法复杂度和大O表示法,算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源,这篇文章主要给大家介绍了关于如何利用JavaScript实现排序算法的相关资料,需要的朋友可以参考下
这篇文章主要为大家详细介绍了Vue项目利用axios请求接口下载excel,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
定义新的构造函数,并在内部使用call()调用希望继承的结构函数,绑定this。借助中间函数F实现原型链继承,最好通过封装的inherits函数完成。在新的构造函数原型上继续定义新的方法。
这篇文章主要为大家详细介绍了小程序实现tab更换页面效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
js判断在哪个浏览器打开项目的方法,通过以下方法判断浏览器
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008