TS-类型推断


一.赋值推断

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

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] }

文章作者: 高红翔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 高红翔 !
  目录