【TS】类型别名和类型推断

在TS中凡是在冒号: 后面的都是在声明类型和实际业务逻辑并无关系,是对参数和返回值类型约束的写法。

?标识符表示可选,可选参数需置后。添加默认值的参数也会自动识别为可选参数。

function add(x: number, y: number, z?: number, q: number = 10): number {
    if(typeof z === 'number'){
        return x + y + z
    }else {
       return x + y 
    }
    
}
let result = add(2, 3)

// 函数表达式
const add2 = function (x: number, y: number, z?: number, q: number = 10): number {
    if(typeof z === 'number'){
        return x + y + z
    }else {
       return x + y 
    }
}

const add2: (x: number, y: number, z?: number) => number = add

此处的箭头不是es6中的箭头函数,而是TS中声明函数类型返回值的一种方法。 

类型别名

// 用类型别名实现联合类型
type NameResolver = () => string
type NameOrResolver = string | NameResolver
function getName(n: NameOrResolver): string {
    if(typeof n === 'string') {
        return n
    } else {
        return n()
    }
}

类型断言

未指定类型时TS会给出推断类型,因此再次给变量赋不同类型的值时会报语法错误

let str = 'str'
str = 123 // 未指定类型时TS会给出推断类型,因此再次给变量赋不同类型的值时这里会报语法错误
// 无返回值类型函数
function sayHello(): never {
  while(true) {}
}
// 永远不会执行完成的函数类型
function errorEmitter(): never {
  throw new Error() 
  while (true) {}
}

//解构赋值类型注解方法
function addObj({ first, second }: { first: number; second: number }): number {
  return first + second;
}
const totalObj = addObj({ first: 1, second: 2 });

类型断言 

function getLength(input: string | number): number {
    
    // 把input 断言为 string
    if((<string>input).length) {
        return (<string>input).length
    }else {
        return input.toString().length
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值