半小时入门TypeScript核心知识点

news/2024/7/7 15:31:37

TypeScript是什么

JavaScript是前端开发的核心语言,但是这门语言天生就存在很多的问题,比如变量提升,不支持类型认证,难以理解的面向对象。

针对这些问题,就出现了TypeScript,它专门针对JavaScript这门脚本语言的不足做出很多的改进,同时新增了一些高级的特性,所以说,TypeScript是JavaScript的超集!

TypeScript如何用

TypeScript作为一门语言,它还不能直接运行在浏览器中,需要对TypeScript进行解析,解析成我们的ES5的语法,才能被浏览器识别并且运行起来。

第一步:安装typescript

npm install -g typescript

第二步:执行ts文件(假如现在就有greeter.ts)

tsc greeter.ts

类型验证

类型验证是目前TypeScript最大的特点。

1、现在定义一个变量,我们可以规定这个变量的类型。

let a: number;
//a现在只能被赋值为一个数字
a = 1//正确
a = '123'; //错误,因为已经申明了必须是number类型

2、现在定义一个函数,这个函数的返回值可以规定返回值的类型。

//规定了这个函数的返回值类型是number
function fun1(a,b): number{
    return a + b;
}

3、现在也可以对一个函数的参数,进行定义参数的类型

function fun1(a: number, b: number): number{
    return a + b;
}

4、如果一个函数没有返回值,可以定义它的返回值类型为void。

function getName(name): void{
    console.log(name)
}

新的基础类型

之前的基础类型是Number、String、Boolean、Array、Null、Undefined等等

现在新增了Any、Tuple(元组)、enum(枚举)、Void

1、Any
如果你不确定你的变量的类型、或者函数参数、返回值的时候,你就可以把它申明为any类型;

function test(name): any{
    console.log(name)
}

2、Tuple元组
数组一般表示一组相同类型的一个集合。

而元组一般可以表示不同类型的元素的一个集合。

//定义类一个元组,第一项为number类型,第二项为string类型
let x:[number, string];
x = [1, 'maobar_front'];

3、enum枚举
枚举是使用对象的方式表示一组数字。这个数字默认是从0开始。(也可以自定义)

enum Color { Red, Green, Blue };
console.log(Color.red);//0

4、Void
和Any类型相反,表示没有任何类型。

interface

接口的概念,是之前的JavaScript不具备的,它代表了一个类,必须对某些属性或者方法进行实现。

//定义了一个接口
interface Me{
    name: string;
    age: number;
}
//使用类对接口进行实现
class MapbarFront implements Me {
    name: string = 'mapbar_front';
    age: number = 25;
    getName(): void{ 
        console.log(this.name);
    }
}

一般而言,接口可以规定哪些属性是必须实现的,哪些是可选的,其中可选的标记为“?”,例如:

interface Test{
    name: string;
    age?: number;//表示一个类中可以不用实现age属性
}

泛型

泛型是TypeScript的又一大特性

如果传入的数据的类型是string,我返回的结果也是string。如果传入的数据类型是number,那么我返回的结果也是number。其中,any类型不能代替泛型,因为使用any类型,传入的可能是string,返回的可能就是其他的类型数据。

一个标准的泛型定义的语法是:

function identity<T>(arg:T): T{
    return arg
}

如果是用到特殊的属性,比如.length,就要确保你的参数是个数组,如下所示:

function identity1<T>(arg:T[]):T[]{
    console.log(arg.length);
    return arg;
}
console.log(identity1([1,2,3]));

函数类型申明

一个完整的函数类型的申明如下:说明函数的参数,函数的返回值等信息。

let add: (x: number, y: number) => number = function (x: number, y: number) {
    return x + y;
}

//推断类型:
let add = function (x: number, y: number): number {
    return x + y;
}

let add1: (x:number,y:number) => number = function (x,y) {
    return x+y
}
//可选参数问题:(下面的add函数y是可选的)
function add(x:number,y?:number): number{
    if(y){
        return x+y;
    }else {
        return x;
    }
}

包含ES6的部分

TypeScript也在积极拥抱ES6的变化,它的发展也在根据JavaScript的语法的演变而进化。

ES6知识模块的概念。import和export。

ES6支持箭头函数。() => {};

ES6支持解构赋值。使用对象或者数组来申明变量。


http://www.niftyadmin.cn/n/1411281.html

相关文章

初学Android,音频管理器之控制音频(六十六)

下面要写的是AudioManager这个音频管理器,它可以通过getSystemService得到 有一个重要方法adjustStreamVolumn(int streamType,int direction,int flags) streamType 这个参数指定了声音的类型&#xff0c;如下 STREAM_ALARM:手机闹铃声音 STREAM_DTMF:DTMF音调的声音 STREAM_M…

分享一个基于Node的名片设计网站

我现在本职工作是UI设计&#xff0c;但是在工作中也喜欢了解和学习前端技术&#xff0c;这是小网站是我去年开始学习Node之后开发的个人项目。这个项目边学边做&#xff0c;断断续续也有半年时间吧&#xff0c;期间不断增加新功能&#xff0c;优化用户体验。现在因为想构想新项…

初学Android,手机振动器(六十七)

手机振动器&#xff0c;这个一般是不响铃声的时候才用&#xff0c;不过我一下想到了PlayStation平台上面的"生化危机"&#xff0c;当操作的主角被僵尸啃食的时候&#xff0c;手柄就会强烈振动&#xff0c;手机游戏的振动器是"天然"具备的条件&#xff0c;制…

nodejs学习——关于事件机制

Nodejs是单进程单线程的应用程序&#xff0c;其执行环境是基于 V8 引擎实现。 事件机制都是使用设计模式中的观察者模式实现的。 触发一个事件&#xff0c;就是在注册的事件循环中&#xff0c;进行执行这个事件。 var events require(events); var eventEmitter new event…

Webloginc 内存溢出解决方法

Webloginc 内存溢出解决方法 &#xff1a;javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space解决方法&#xff1a;1.在base_domain 域下找到startWebLogic.bat 文件&#xff0c;然后打开编辑&#xff0c;2.然后加入以下的代码JAVA_OPTS-Xms512m -Xm…

nodejs学习——Buffer对象

Buffer在nodejs中被称为缓存区。 JavaScript语言中&#xff0c;拥有存储字符串的数据类型&#xff0c;但是当我们想要存储的是二进制数据的时候&#xff0c;就不知道如何在内存中表达了。在Nodejs中&#xff0c;Buffer对象就是用来解决这个问题的。 字符编码 Buffer默认的字…

初学Android,手机闹钟服务(六十八)

AlarmManager的使用机制有的称呼为全局定时器&#xff0c;有的称呼为闹钟。通过对它的使用&#xff0c;它的作用和Timer有点相似。 都有两种相似的用法&#xff1a; &#xff08;1&#xff09;在指定时长后执行某项操作&#xff08;2&#xff09;周期性的执行某项操作在android…

初学Android,闹钟服务调用Service(六十九)

下面的例子是让AlarmManager定时调用某个Service&#xff0c;从而让系统实现定时更换壁纸的功能 界面非常简单先创建更换壁纸的服务类package WangLi.Service.AlarmWallpaper;import android.app.Service; import android.app.WallpaperManager; import android.content.Intent…