基本数据类型
- number
- boolean
- string
- bigint
- symbol
测试小案例
let num: number;
num = 123;
num = '字符串';
数组
let nums: Number[]; // let nums: Array<Number>;
nums = [1, 2, 3, 4];
nums = [1, 2, 3, '字符串', false];
联合类型
声明一个arr数组,既可以存储number,又可以存储string
let arr: (number | string)[];
arr = [1, 2, 3, '字符串'];
arr = [1, 2, 3, '字符串', false];
但是赋一个其他类型的值就会报错
任意类型
any 代表着任意类型,默认。但不建议使用
let arr: any[];
arr = [1, 2, 3, '字符串'];
arr = [1, 2, 3, '字符串', false];
元组
- 元组类型tuple
- TS中元组类型其实就是数组类型的扩展
- 元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要需要相同
// 表示定义了一个名称叫做 tuple 的元祖, 这个元祖中将来可以存储3个元素,
// 第一个元素必须是字符串类型, 第二个元素必须是数字类型, 第三个元素必须是布尔类型
let tuple: [string, number, boolean];
tuple = ['字符串',1, false];
tuple = [1 ,1, false];
void
没有返回值的时候可以用void
function test(): void {
console.log(111);
return 1;
}
null与undefined
- TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。 和 void相似,它们的本身的类型用处不是很大
- 非严格模式下,可以把 null和undefined赋值给number类型的变量
let n: null = null;
let m: undefined = undefined;
n = 1;
never
表示的是那些永不存在的值的类型;
never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;
变量也可能是 never类型,当它们被永不为真的类型保护所约束
object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型
let obj: object;
obj = {
name: "字符串",
num: 1,
flag: true,
};
枚举
enum类型是对JavaScript标准数据类型的一个补充。 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。
// 枚举用于表示固定的几个取值
enum state {
sta1 = '11',
sta2 = '22',
sta3 = '33'
}
let val: state;
val = state.sta1;
val = 11; // 报错,不能将类型“11”分配给类型“state”
断言类型
- 什么是类型断言?
类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。 - 语法格式
<类型>值
值 as 类型
let str = '字符串'
let num = (str as string).length;
let n = (<string> str).length;
type别名
类型别名就是给一个类型起个新名字, 但是它们都代表同一个类型
用法(1)
type schools = "中山大学" | "天津大学" | "南开大学";
let sch: schools;
sch = "中山大学";
sch = "北京大学"; // 报错,不能将类型“"北京大学"”分配给类型“schools”。
用法(2)
type myFun = (x: number, b: number) => number;
let fun: myFun = (a: number, b: number) => a + b;
用法(3)
type result = {
name: string;
age: number;
flag?: boolean;
};
let obj: result;
obj = {
name: "字符串",
age: 18,
flag: false,
};
obj = {
name: "字符串",
age: 18,
};