TypesScript

1.什么是typescript?

TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。

2.为什么要使用TypeScript?

应为JavaScript是弱类型,许多的错误是在我们写完代码运行的时候才会在工作区里发现错误的提示。
而TyoeScript它提供了一套静态监测的机制,可以帮我们在编译的时候发现错误,这一点要比JavaScript强许多。

3.Typescript的特点?

TypeScript是支持最新的JavaScript新特性,并且支持代码静态检查。例如C、C++、Java、Go...这些后端语言中的特性(枚举、泛型、类型转换、命名空间、声明文件、类、接口...)

4.使用步骤

  • 安装最新版本的typescript npm i -g typescript

  • 安装ts-nodenpm i -g ts-node

  • 创建一个 tsconfig.json 文件tsc --init

    • 在使用时在项目里新建index.ts,输入相关的练习代码,然后执行ts-node index.ts

5.TypeScript的基础类型

  • Boolean 类型
let isDone: boolean = false;
  • String 类型
let name: string = "semliker";
  • Symbol 类型
const sym = Symbol();
let obj = {
  [sym]: "semlinker",
};

console.log(obj[sym]);
  • Array 类型
let list: number[] = [1, 2, 3];
//var list = [1,2,3];

let list: Array<number> = [1, 2, 3];
//var list = [1,2,3];
  • null和undefined

默认情况下 nullundefined 是所有类型的子类型。 就是说你可以把 nullundefined 赋值给其他类型。

// null和undefined赋值给string
let str:string = "bushicai";
str = null
str= undefined

let num:number = 6;
num = null
num= undefined

let obj:object ={};
obj = null
obj= undefined

let sym: symbol = Symbol("me"); 
sym = null
sym= undefined

let isDone: boolean = true;
isDone = null
isDone= undefined

let big: bigint =  100n;
big = null
big= undefined
  • number和bigint

numberbigint都表示数字,但是这两个类型不兼容。

let big: bigint =  100n;
let num: number = 6;
big = num;
num = big;

使用时会报出diagnosticCodes: [ 2737, 2322, 2322 ]这个错误

6.数组和元组

  • 在使用数组的时候我们可以在<>里定义数组的类型
let arr2:Array<number>=[1,2]
let str2:Array<string>=['a','b']

console.log('数组泛型<>方式',arr2,str2);
  • 使用元组的话在元组里面可以放不同类型的数据
let arr3:[number,string]=[6,'元组']
//arr3=[2]  //在重新赋值的时候必须与上面[]里定义的数据类型重合,否则会报错
console.log(arr3)

7.联合类型

在我们些某些项目登录的时候不想固定密码的类型我们可以使用这种联合类型,使用时在定义的数据后加上|就可以

let object={
	username:string;
    login:string|number;
}
object.login='1234567'
object.login=1234567
//如果让object.login=true编译时会出现报错,因为在上面的object.login后的数据类型里面没有boolean类型

8.any

在 TypeScript 中,任何类型都可以被归为 any 类型。这让 any 类型成为了类型系统的顶级类型.

如果是一个普通类型,在赋值过程中改变类型是不被允许的:

let a: string = 'seven';
a = 7;

但如果是 any 类型,则允许被赋值为任意类型。

let a: any = 666;
a = "hhhhhhh";
a = false;
a = 8
a = undefined
a = null
a = []
a = {}

在声明变量的时候没有指定它的类型的话,那么它会被识别为任意值类型

let something;
something = 'seven';
something = 7;
something.setName('Tom');
//等价于↓
let something: any;
something = 'seven';
something = 7;
something.setName('Tom');

9.断言

在我们使用TS对数组类型做判断时不像js那个样直接就判断出哪些数据是大于哪些数据应为TS是针对静态类型的它对运行时的逻辑却无能为力

例如:

const arr: number[] = [1, 2, 3, 4];
const arr2: number = arrayNumber.find(num => num > 2); // 提示 ts(2322)

在 TypeScript 看来,arr2的类型既可能是数字,也可能是 undefined,所以上面的示例中提示了一个 ts(2322) 错误,此时我们不能把类型 undefined 分配给类型 number。

不过我们可以使用类型断言告诉 TypeScript 按照我们的方式做类型检查。

我们可以使用 as 语法做类型断言:

const arr: number[] = [1, 2, 3, 4];
const arr2: number = arrayNumber.find(num => num > 2) as number;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值