介绍
TypeScript具有类型系统,且是JavaScript的超集。
基础类型
TypeScript 提供了和 js基本相同的数据类型,还提供了实用的枚举类型供我们使用。
布尔类型
let a: boolean = false;
数字类型
let n: number = 1;
字符串类型
let s: string = 'a';
还可以使用模板字符串:
let s: string = `a ${ b }`;
数组类型
两种,表示由此类元素组成的数组:
let arr: number[] = [1, 2, 3];
或,使用数组泛型
let arr: Array<number> = [1, 2, 3];
元组类型
元组类型允许表示一个已知元素类型和数量的数组
let t : [string, number];
t = ['a', 1]; // ok
t = [1, 'a']; // error
当访问一个越界的元素,会使用联合类型替代
x[3] = 'world'; // ok,字符串可以赋给 (string | number)类型
枚举类型
枚举类型是对 js 标准数据类型的一个补充,使用枚举类型,可以为数组类型赋予一组友好的名字
enum Color = {Red, Green, Blue};
let c: Color = Color.Green;
// 上面是从 0 开始,为元素编号
// 也可以手动赋值,可以由枚举的值得到它的名字:
enum Color = {Red=1, Green=2, Blue=3}
let c: string = Color[2];// 'Green
任意值
有时候,不希望类型检查或不清楚类型
let notsure: any = 4;
notsure = 'a';
notsure = false;
空值
当一个函数没有返回值时,通常见到其返回类型为空值
function f(): void {
alert('a');
}
Null 和 Undefind
和 void 类型一样,null 和 undefind 类型本身用途不大
let n: null = null;
let u: undefined = undefined;
默认情况下,null 和 undefined 是所有类型的子类型。
使用
–strictNullChecks 可以限定 null 和 undefined 只能赋值给 void 和各自类型
Never 类型
never 类型表示永不存在的值的类型
// 返回 never 类型的函数必须存在无法达到的终点
function f(msg: string){
throw new Error(msg)
}
never 类型是任何类型的子类型,也可以赋值给任何类型,但不能被任何类型赋值
类型断言
使用 <>
let str: any = 'a';
let length: number = (<sting>str).length;
使用 as
let str: any = 'a'
let length: number = (str as string).length;
<> 和 as 两种方式是等价的,看个人习惯,如果在 JSX 中使用,只能用 as
Link
https://typescript.bootcss.com/
https://www.tslang.cn/docs/home.html
https://ts.xcatliu.com/