这是我参与「第四届青训营 」笔记创作活动的的第4天
安装和编译
全局安装typescriptnpm install typescript -g
将typescript编译为JavaScripttsc index.ts
ts数据类型
字面量
// 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
可选属性,否则必须按照声明来写
只对个别属性进行限制,其他属性不做要求;对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
* => 任意文件
** => 任意目录
file选项跟include选项类似,但是指定的是要编译的具体文件