1.什么是typescript?
TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。
2.为什么要使用TypeScript?
应为JavaScript是弱类型,许多的错误是在我们写完代码运行的时候才会在工作区里发现错误的提示。
而TyoeScript它提供了一套静态监测的机制,可以帮我们在编译的时候发现错误,这一点要比JavaScript强许多。
3.Typescript的特点?
TypeScript是支持最新的JavaScript新特性,并且支持代码静态检查。例如C、C++、Java、Go...这些后端语言中的特性(枚举、泛型、类型转换、命名空间、声明文件、类、接口...)
4.使用步骤
-
安装最新版本的typescript
npm i -g typescript
-
安装ts-node
npm i -g ts-node
-
创建一个 tsconfig.json 文件
tsc --init
- 在使用时在项目里新建index.ts,输入相关的练习代码,然后执行
ts-node index.ts
- 在使用时在项目里新建index.ts,输入相关的练习代码,然后执行
5.TypeScript的基础类型
let isDone: boolean = false;
let name: string = "semliker";
const sym = Symbol();
let obj = {
[sym]: "semlinker",
};
console.log(obj[sym]);
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
是所有类型的子类型。 就是说你可以把 null
和 undefined
赋值给其他类型。
// 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
都表示数字,但是这两个类型不兼容。
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;