这是我参与「第五届青训营 」伴学笔记创作活动的第 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文件,不过Vue、React这些框架中选定ts作为开发语言之后不需要考虑这些。
在用tsc进行编译时,可以用不同的严格程度,即增加参数:--参数,或者在tsconfig.js文件中进行设置。