typescript数据类型 | 青训营笔记

100 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第4天

安装和编译

全局安装typescriptnpm install typescript -g
将typescript编译为JavaScripttsc index.ts

ts数据类型

image.png

字面量

// a指定为数字类型10,后续不能够被修改
let a: 10;

// a被指定为字符串类型,值为"male"或"female",其他赋值会报错
let b: "male" | "female";
b = "male";

let c: boolean | string;
c = true;
c = 'hello';

any

设置为any后,相当于关闭了ts类型检测,跟js一样,使用ts时不建议使用any
声明时若不指定类型,则ts解析器自动判断变量的类型为any(隐式的any)
any可以赋值给任意变量

let d: any;
d = true;

let s: string;
s = d; // !!!不报错

unknown

未知数据类型,类型安全的any
不能给其他类型的值变量赋值

let e: unknown;
e = 'hello';

let s: string;
s = e; // !!!!!!报错

解决方案:(1)添加变量类型的判断(2)类型断言

// 方法一:判断类型
if (typepf e === 'string') {
    s = e;
}

// 方法二:类型断言,告诉解析器变量的实际类型
s = e as string;
// or
s = <string>e

void

// 以下三种都为返回值为void的情况,都不会报错

return
return;
return undefined;
return null;

never

永远不会返回结果,eg. 程序报错

function fn(): never {
    throw new Error("error happend");
}

object

可选属性,否则必须按照声明来写 image.png 只对个别属性进行限制,其他属性不做要求;对function的声明也通用

let c: {name: string, [propName: string]: any}

array

let a: string[];
let b: Array<string>;

tuple元素 => 固定长度的数组

数量和类型必须与声明相同

let h: [string, string];
h = ['hello', 'world']

enum => 枚举

性别选择等

enum Gender {
    Male,
    Female,
}
let i: {name: string, gender: Gender};
i = {name: 'Tim', gender: Gender.Male};

给类型起别名

对类型限制条件比较多的情况下,可以给类型起个别名,更方便声明

type myType = string;

编译选项

只监视单个文件:实时监测代码变化进行编译tsc index.ts -w
编译所有ts文件 => tsconfig.json文件中编写配置 => tsc or tsc -w
* => 任意文件
** => 任意目录

image.png

image.png

image.png

file选项跟include选项类似,但是指定的是要编译的具体文件 image.png