• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript函数相关类型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
// JS 中定义函数的方式
function hell(){}
const hello1 = function(){}
const hello2 = () => {}

 

 

// TS 中定义函数的方式
// 参数需要类型注解,返回值不需要
function add(first: number, second: number) { 
    return first + second;
}
const total = add(1,2); // 这里 total 是3,肯定是 number


// 在返回值不小心写错了,这个时候不报错
function add1(first: number, second: number) { 
    return first + second + '';
}
const total1 = add1(1, 2); // 这里 total 推断出来是 string


// 但是实际上是想要 total 是 number 类型的,这个时候加上返回值的限制,就会报错
function add2(first: number, second: number): number { 
    return first + second + ''; // Type 'string' is not assignable to type 'number'.
}
const total2 = add2(1, 2);

总结:明确了需要的返回值类型,可以做一层约束



function add(first: number, second: number): number { 
    return first + second;
}
// 函数返回值除了这种基本类型,还有两种

/**
 * 1、函数的返回值是 void 类型,也就是希望这个函数没有返回值
 * 如果有返回值就会报错
 */
function sayHello(): void {
    console.log('hello');
}

/**
 * 2、函数的返回值是 never 类型,never 的意思是这个函数永远不可能执行到最后
 * 比如 throw 后面的代码没有办法执行,也就是这个函数永远不可能执行完成
 * 或者 while(true){} 这也永远执行不完
 */
function errorEmitter(): never {
    throw new Error();
    console.log(123);
}

总结: void (这个函数没有返回值), never (这个函数永远不可能执行到最后)





// 传统的 js 传递参数的方法,这里面用的是解构的方式

function add ({first, second}) {
    return first + second
}
const total = add({first:1, second:2});

/**
 * 这个时候我想这个参数是有类型的,那么解构的方式要怎么进行
 * {first, second} : {first:number, second:number} 是正确的结构声明类型的方式
 */
function add1 ( 
    {first, second} : {first:number, second:number} 
): number {
    return first + second
}
const total1 = add1({first:1, second:2});


/**
 * 在只有一个解构数的时候
 * { first }: number 不能这么写
 * { first }: {first: number} 要这么写,统一的 {}:{}
 */
function getNumber({ first }: {first: number}){
    return first;
}
const count = getNumber({ first: 1 })
总结:ts 结构参数传递方式 {first, second} : {first:number, second:number}



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript语言中的函数参数发布时间:2022-07-18
下一篇:
typeScript数据类型发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap