# 十.类型推断

前言

# 1.赋值推断

赋值时推断,类型从右向左流动,会根据赋值推断出变量类型

let str = "abc";
let age = 11;
let boolean = true;
1
2
3

# 2.返回值推断

自动推断函数返回值类型

function sum(a: string, b: string) {
  return a + b;
}
sum("a", "b");
1
2
3
4

# 3.函数推断

函数从左到右进行推断

type Sum = (a: string, b: string) => string;
const sum: Sum = (a, b) => a + b;
1
2

# 4.属性推断

可以通过属性值,推断出属性的类型

let person = {
  name: "abc",
  age: 11,
};
let { name, age } = person;
1
2
3
4
5

# 5.类型反推

可以使用typeof关键字反推变量类型

let preson = {
  name: "abc",
  age: 11,
};
type Person = typeof person;
1
2
3
4
5

# 6.索引访问操作符

interface IPerson {
  name: string;
  age: number;
  job: {
    address: string;
  };
}
type job = IPerson["job"];
1
2
3
4
5
6
7
8

# 7.类型映射

interface IPerson {
  name: string;
  age: number;
}
type MapPerson = { [key in keyof IPerson]: IPerson[key] };
1
2
3
4
5