千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  如何在TS中对函数的返回值进行类型约束

如何在TS中对函数的返回值进行类型约束

来源:千锋教育
发布人:lxl
时间: 2023-04-10 11:27:31

  一、ts中函数参数的类型定义

  函数的参数可能是一个,也可能是多个,有可能是一个变量,一个对象,一个函数,一个数组等等。

  1.函数的参数为单个或多个单一变量的类型定义

  function fntA(one, two, three) {

  // 参数 "two" 隐式具有 "any" 类型,但可以从用法中推断出更好的类型。

  return one + two + three

  }

  const aResult = fntA(1, '3', true)

  修改后:

  function fntA(one: number, two: string, three: boolean) {

  return one + two + three

  }

  const aResult1 = fntA(1, '3', true)

  // 如果函数的参数为单个或者多个变量的时候,只需要为这些参数进行静态类型下的基础类型定义就行

  2.函数的参数为数组的类型定义

  function fntB(arr) {

  //参数 "arr" 隐式具有 "any" 类型,但可以从用法中推断出更好的类型。

  return arr[0]

  }

  const bResult = fntB([1, 3, 5])

  修改后:

  function fntB(arr: number[]) {

  return arr[0]

  }

  const bResult1 = fntB([1, 3, 5])

  // 如果参数是数组时,只需要为这些变量进行对象类型下的数组类型定义

  3.函数的参数为对象的类型定义

  function fntC({ one, two }) {

  return one + two

  }

  const cResult = fntC({ one: 6, two: 10 })

  修改后:

  function fntC({ one, two }: { one: number, two: number }) {

  return one + two

  }

  const cResult1 = fntC({ one: 6, two: 10 })

  // 如果参数是对象,只需要为这些变量进行对象类型下的对象类型定义

  4.函数的参数为函数的类型定义

  function fntD(callback) {

  //参数 "callback" 隐式具有 "any" 类型,但可以从用法中推断出更好的类型

  callback(true)

  }

  function callback(bl: boolean): boolean {

  console.log(bl)

  return bl

  }

  const dResult = fntD(callback)

  修改后:

  function fntD(callback: (bl: boolean) => boolean) {

  callback(true)

  }

  function callback(bl: boolean): boolean {

  console.log(bl)

  return bl

  }

  const dResult = fntD(callback)

  // 如果参数是函数,只需要为参数进行对象类型下的函数类型定义即可

  二、ts中函数返回值的类型定义

  当函数有返回值时,根据返回值的类型在相应的函数位置进行静态类型定义即可

  返回数字:

  function getTotal2(one: number, two: number): number {

  return one + two;

  }

  const total2 = getTotal(1, 2);

  // 返回值为数字类型

  返回布尔值

  function getTotal2(one: number, two: number): boolean {

  return Boolean(one + two);

  }

  const total2 = getTotal(1, 2);

  // 返回值为布尔类型

  返回字符串

  function getTotal2(one: string, two: string): string{

  return Bone + two;

  }

  const total2 = getTotal('1', '2');

  // 返回值为字符串

  返回对象

  function getObj(name: string, age: number): { name: string, age: number } {

  return {name,age}

  }

  getObj('小红',16)

  // 返回值为对象

  返回数组

  function getArr(arr: number[]) :number[]{

  let newArr = [...arr]

  return newArr

  }

  getArr([1,2,3,4])

  // 返回值为数组

  函数返回值为underfinde,仅仅时为了在内部实现某个功能,我们就可以给他一个类型注解void,代表没有任何返回值,

  function sayName() {

  console.log('hello,world')

  }

  修改后:

  function sayName1(): void {

  console.log('无返回值')

  }

  当函数没有返回值时

  // 因为总是抛出异常,所以 error 将不会有返回值

  // never 类型表示永远不会有值的一种类型

  function error(message: string): never {

  throw new Error(message);

  }

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>