首页 > 其他分享 >TypeScript笔记 - 函数

TypeScript笔记 - 函数

时间:2023-02-03 09:57:28浏览次数:46  
标签:TypeScript return 函数 getName 笔记 参数 string name

注解函数

函数需要注解的部分其实只有 参数值 和 返回值

let checkFunc = (str: string): boolean => {
    return str['includes']('a')
}
checkFunc('abc')

 

使用接口注解函数

使用接口定义函数类型,描述的是一个参数列表 和 返回值类型, 参数列表里每个参数都需要名字和类型

interface CheckFuncConfig {
    // 参数列表    // 返回值
    (str: string): boolean
}

let checkFunc: CheckFuncConfig = (str) => {
    return str['includes']('a')
}
checkFunc('abc')

 

可选参数

就像接口中可选属性一样,函数也存在可选参数

let people: (name: string, age?: number) {
    // ...
}

 

参数名和接口定义的可以不一样

对于函数类型的类型检查来说,函数的参数名不需要与接口里定义的名字相匹配,但是会逐个检查,要求对应位置上的参数类型是一样的。

就像下面代码块,上面接口定义的字段是str,但也可以接受成其他字段,比如sss

interface CheckFuncConfig {
     // 参数列表    // 返回值
    (str: string): boolean
}

let checkFunc: CheckFuncConfig = (sss) => {
    return sss['includes']('a')
}
checkFunc('abc')

 

重载

在 js 里,函数时常会有这种场景:根据传入不同的参数而返回不同类型的数据。

看一下如下例子:传入的如果是字符串,返回参数在名称列表的索引;传入的如果是数字,返回名称列表这个索引位置的数据

let nameList = ['Jane', 'Sasa', 'Aba']

function getName(name): any{
    if(typeof name === 'number'){
        return nameList[name]
    } else if(typeof name === 'string'){
        return nameList.indexOf(name)
    }
}

console.log(getName('Sasa')) // 1
console.log(getName(1)) // Sasa

接下来讨论怎么能在类型系统中,表现这种情况:

类型推断更适用于 参数只有一种类型的情况

在这个例子中,参数有多种参数类型。这时需要用到 函数重载。下面使用这种方法重写上面的例子:

let nameList = ['Jane', 'Sasa', 'Aba']

function getName(name: string): number
function getName(name: number): string
function getName(name): any{
    if(typeof name === 'number'){
        return nameList[name]
    } else if(typeof name === 'string'){
        return nameList.indexOf(name)
    }
}

console.log(getName('Sasa')) // 1
console.log(getName(1)) // Sasa

上面多了两行代码。为getName函数提供两个函数类型定义,每个函数类型定义就是一个重载,这样组成了一个重载列表,编译器会在其中寻找匹配的类型注解。

 

标签:TypeScript,return,函数,getName,笔记,参数,string,name
From: https://www.cnblogs.com/naturl/p/17086852.html

相关文章

  • py10函数之嵌套-名称空间作用域
    #函数是第一类对象:函数名指向的值可以被当中参数传递#1.函数名可以被传递#name='jason'#x=name#print(x)#print(id(x))#deffunc():#print('fromfunc')......
  • consul学习笔记
    consul默认的服务端口是8500consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Va......
  • py09函数简介
     函数的返回值#deffunc():#return'asfjsfda'#res=func()#print(res)#函数内要想返回给调用者值必须用关键字return"""不写return只写return写returnNone......
  • 2PC---两阶段 分布事务2 笔记20230203
        ......
  • Excel函数学习
    1.单条件求和=SUMIF(条件区域,求和条件,实际求和区域)2.多条件求和=SUMIFS(需要求和区域,条件区域1,求和条件1,条件区域2,求和条件2,......)3.单元格所在行位置=ROW(单......
  • nnUNet学习笔记(二):网络架构代码-1
    逐段解读文件:nnUNet/nnunet/network_architecture/neural_network.pyimportnumpyasnpfrombatchgenerators.augmentations.utilsimportpad_nd_imagefromnnunet.ut......
  • Shader入门精要笔记 - CH7.3_渐变图控制漫反射
    左边是使用了前面提到的SpecularPerPixel,中间是没加渐变图时,右边是加了渐变图 高光+渐变图漫反射(RampTex)Shader"My/Tex/RampTexture"{Properties{......
  • Shader入门精要笔记 - CH7.2_法线贴图
    左侧为没用法线贴图,就视觉上没有凹凸感  法线贴图+高光+贴图漫反射(MainTex)Shader"My/Tex/NormalMapInTagentSpace"{Properties{_MainTex("......
  • C++ 虚函数底层表达
    转载一篇乐哥的博客,对虚函数,虚函数表和派生类对象赋予给基类指针时地址的变化等会有更深的理解https://mp.weixin.qq.com/s?__biz=Mzk0MzI4OTI1Ng==&mid=2247489554&idx=1......
  • python内置函数map
    map()函数介绍map()是python的一个内置函数,其作用是返回一个迭代器,该迭代器将function函数应用于iterable的每个项,并产生结果。map函数的语法:map(function,iterable,......