Ts总结7、函数(typeof运算符)

一、函数类型了解的要点

1、函数的类型声明,需要在声明时,给出参数和返回值的类型;如果不指定参数类型,TS会推断参数类型(如果信息量不够,会推断为any-任意值);返回值的类型通常不写,因为TS会推断

function hello(txt:sting):void {
    console.log('hello'+txt)
}
// 上述代码:函数hello()在声明时,需要给出参数txt的类型(string),以及返回值的类型(void),
//后者写在参数列表的圆括号后面。void类型表示没有返回值

// 由于没有return语句,TypeScript 会推断出函数hello()没有返回值。不过,有时候出于文档目的,
//或者为了防止不小心改掉返回值,还是会写返回值的类型

2、如果变量被赋值为一个函数,变量的类型写法有两种

// 写法一是通过等号右边的函数类型,推断出变量hello的类型
const hello = 
function (txt:string) {
  console.log('hello ' + txt);
}


// 写法二则是使用箭头函数的形式,为变量hello指定类型,参数的类型写在箭头左侧,返回值的类型
//写在箭头右侧
const hello : 
(txt:string) => void 
= function (txt) {
  console.log('hello ' + txt);
};

写法二有两个地方需要注意。

首先,函数的参数要放在圆括号里面,不放会报错。

其次,类型里面的参数名(本例是txt)是必须的TS不能省略——

再次,如果省略写成(string) => void,TypeScript 会理解成函数有一个名叫 string 的参数,并
且这个string参数的类型是any。

3、“函数类型”里面的参数名与实际参数名,可以不一致(理解成普通js函数形参和实参可以不同一样)。

let f:(x:number) => number;
 
f = function (y:number) {
  return y;
};

上述函数类型里面的参数名为x,实际的函数定义里面,参数名为y,两者并不相同

4、如果的类型定义的冗长或者多个函数使用同一种类型,写法二用起来就很麻烦,可以用type命令设置别名

type MyFunc = (txt:string) => void;

const hello:MyFunc = function (txt) {
  console.log('hello ' + txt);
};

// type命令为函数类型定义了一个别名MyFunc,后面使用就很方便,变量可以指定为这个类型

5、函数的实际参数个数,可以少于类型指定的参数个数,但不能多于,即TS可以省略参数

let myFunc : (a:number, b:number)=> number

myFunc = (a:number) => a // 正确:类型两个参数,实际一个参数

myFunc = (a:number, b:number, c:number) => a + b + c //报错:类型仅指定了两个参数类型

6、如果一个变量要套用另一个函数的类型可以用typeof运算符

function add:(a:number, b:number) {
    return x + y
} 

const myAdd:typeof add = function(x, y){
    return x + y
}

// 上面示例中,函数myAdd()的类型与函数add()是一样的,那么就可以定义成typeof add。因为函数
//名add本身不是类型,而是一个值,所以要用typeof运算符返回它的类型。这是一个很有用的技巧,任何
需要类型的地方,都可以使用typeof运算符从一个值获取类型。

1.2、函数类型还可以采用对象的写法(用的较少,是适用于函数本身存在属性)

语法:

{

        (参数列表):返

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值