TypeScript入门 | 青训营笔记

38 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 21 天

TypeScript是作为JavaScript超集的编程语言,会在不运行代码时进行静态类型检查,从而降低代码出错的可能(JavaScript只在运行代码才会得知出现错误,属于动态类型)。
作为JavaScript的超集,TypeScript支持JavaScript的语法,并在执行由JavaScript语法编写的代码时产生同样的结果,即使可能在检查时出现错误警告。

定义类型

可以用let name: string = "xx"这种方式完成基本类型定义。

对象类型

可以使用interface(接口)关键字描述对象的内部数据类型,然后创建符合(属性名和数据类型都要符合)此接口的对象。

interface Person {
	name: string;
	age: number;
}

const person: Person {
	name: qg;
	age: 114514;
}

类同样也接受类型定义。

class PersonAccount {
	name: string;
	age: number;
	
	constructor(name: string, age: number) {
	this.name = name;
	this.age = age;
	}
}

let p: Person = new PersonAccount('q', 1919810);

函数类型

同样可以对函数的参数和返回定义类型。

function getPerson(p: Person): Person {
	//...
}

组合类型

联合

联合,可以声明类型是众多类型中的一种。 type traffic = "red" | "green";

function slove(val: string | string[]) {
	if (typeof val === "string") { 
		//...
	}
	else {
		//...
	}
}

泛型

泛型用来为类型提供变量。

function get<T>(val: T):T {
    return val;
}

let x = get<string>("g");
let y = get<number>(1);

交叉类型

可以把多种类型叠加起来成为一种新类型。

type PersonList = Array<{
	name: string;
} & ({
	gender: 'male';
	age: number;
} | {
	gender: 'female';
	birthday: string;
})>

这样PersonList的数组的元素可以是两种类型中的一种。

编译器tsc

tsc是TypeScript的编译器,可以通过全局安装TypeScript的方法使用它,或者在项目中借助npx(可以在命令行直接执行本地已经下载的依赖,先在本地的node_modules包里面找如果找不到就去找全局)。 npx tsc fileName.ts 这回生成一个同名的具有相同功能的js文件,转换后的js文件被去除了ts的特性。 需要注意的是,ts文件并不能直接作为脚本文件让html使用,需要使用编译器生成的js文件,不过VueReact这些框架中选定ts作为开发语言之后不需要考虑这些。

在用tsc进行编译时,可以用不同的严格程度,即增加参数:--参数,或者在tsconfig.js文件中进行设置。