一.赋值推断
赋值时推断,类型从右像左流动,会根据赋值推断出变量类型
let str = "zhangsan"
let age = 11
let boolean = true
二.返回值推断
自动推断函数返回值类型
function sum(a: string, b: string) {
return a + b
}
sum("a", "b")
三.函数推断
函数从左到右进行推断
const sum: ISum = (a, b) => {
// a-> string b-> string
return a + b // -> string
}
type ICallback = (x: string, y: string) => void // 不关心返回值
// 标记成void 意味着用户可以写返回值,但是实际上用不到
function fn(cb: ICallback) {
let r = cb("1", "2") // 调用函数后不会根据返回值来推导,默认采用就是上下文中声明的类型
}
// 函数的参数 推断是按照上下文类型的位置来推断的
fn((a, b) => {})
四.类型反推
可以使用typeof
关键字反推变量类型
let person = {
name: "zf",
age: 11,
}
type Person = typeof person
五.索引访问操作符
interface IPerson {
name: string
age: number
job: {
address: string
}
}
type job = IPerson["job"]
六.类型映射
interface IPerson {
name: string
age: number
}
type MapPerson = { [key in keyof IPerson]: IPerson[key] }