基础类型
基本类型
- 字符串:
string
let lx: string = "小沐沐吖";- 数值:
number
let lx: number = 18;- 布尔值:
boolean
let lx: boolean = true;- 数组:
array- 明确每个成员值类型的数组
let lx1: string[] = ["hello", "world"];
let lx2: Array<number> = [18, 24];- 元组:
tuple
let lx: [string, number, boolean] = ["hello world", 18, true];- 对象:
object
let lx1: object = {name: '小沐沐吖'};
let lx2: {name: string, age: number} = {name: '小沐沐吖', age: 18};
let lx3: {name: string, age: numbrt, address?: string} = {name: '小沐沐吖', age: 18};
# address?: string 可选类型- 索引签名
定义任意属性的签名
type MyObject = {
[key: string]: keyof any;
};
let obj: MyObject = {
name: "小沐沐吖",
age: 18,
};- null
let lx: null = null;
// 非严格模式
lx = undefined;- undefined
let lx: undefined = undefined;
// 非严格模式
lx = null;- void
let lx: void = null; // 严格模式报错
let lx: void = undefined;
// void 一般用于函数返回值类型,表示无返回值
function lxFun(): void {}- any - 任意类型
可以相互赋值
let a: any = 1;
let b: number = 3;
a = b;
b = a;- unknow - 不知道的类型
只能赋值给自身或 any 类型
let a: unknown = 1;
let b: number = 3;
a = b;
b = a; // 报错不能读取属性,不能调用方法
- never
可以赋值给任何类型
函数抛出异常或无限循环时返回值是 never
function show(): never {
throw new Error("出错了");
}- union - 联合类型
使用|进行连接
let lx: string | number = "小沐沐吖";
lx = 18;
let lxArr: (string | number | boolean)[] = ["小沐沐吖", 18, false];函数
- 函数声明
let lx: Function = () => {};
let sum: (a: number, b: number) => number;
sum = (x, y) => {
return x + y;
};
function show(msg: string) {
console.log(msg);
}- 参数类型
function sum(a: number, b: number) {
return a + b;
}
// 可选参数
function show(a?: string) {
console.log(a);
}
// 参数默认值
function log(a: string = "hello world") {
console.log(a);
}- 返回值类型
function sum(a: number, b: number): number {
return a + b;
}
function show(a: string): void {
console.log(a);
}类型推断
没有明确设置类型时,系统会根据值推断变量的类型
- 字符串:
string
let lx = "luoxue"; // lx: string
lx = 1; // 编译报错数值:
number布尔值:
boolean数组
const lx1 = ['hello', 'world']; // lx1: string[]
lx1.push(18); # 只允许新增 string 类型的值
const lx2 = ['你好', 18]; // lx2: (string | number)[]
lx2.push(true); $ 只允许新增 string 或 number 类型的值- 对象
const user = {name: '小沐沐吖', age: 18, open: true};
# 类型推断为
const user: {
name: string;
age: number;
open: boolean;
}
user.city = '杭州'; # 报错,不允许添加类型中不存在的属性类型顺序
- 顶级类型(top type):any、unknown
- Object
- Number、String、Boolean
- number、string、boolean
- 字面量:1、'小沐沐吖'、false
- never
依次为包含关系
let lx: any = 1;
lx = {};
lx = false;
lx = "hello world";
lx = Symbol(1);