美文网首页
TS基础(七)函数

TS基础(七)函数

作者: Viewwei | 来源:发表于2020-12-23 10:21 被阅读0次

在JavaScript中函数是一等公民。有两种常见定义函数的方式,函数声明和函数表达式。函数声明和函数表达式还是有稍微的区别:函数声明有变量提升的作用

// 函数声明(Function Declaration)
function sum(x, y) {
    return x + y;
}

// 函数表达式(Function Expression)
let mySum = function (x, y) {
    return x + y;
};

函数有输入和输出,要在TS中对齐进行约束。需要把输入和输出考虑到,其中比较简单的定义如下

function sum(x: number, y: number): number {
    return x + y;
}

注意:输入多余或者少于参数是不被允许的

使用接口约束函数

可以使用接口的方式来定义一个函数需要符合条件的形状

interface SearchFunc {
    (source: string, subString: string): boolean;
}

let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
    return source.search(subString) !== -1;
}

使用接口来定义函数的目的主要有如下几个方面的好处
1:当一个函数当参数传递的时候,可以清楚知道函数的信息。
2:可以保证以后函数参数个数,返回值类型不改变

函数可选参数

输入多余的参数是不被允许的,但是如果参数使用?,那么表示这个参数是可以不传递的。
注意:带?的参数,写在最后才能被省略,否则会报错

function buildName(firstName: string, lastName?: string) {
    if (lastName) {
        return firstName + ' ' + lastName;
    } else {
        return firstName;
    }
}
let tomcat = buildName('Tom', 'Cat');
let tom = buildName('Tom');
function buildName(firstName?: string, lastName: string) {
    if (firstName) {
        return firstName + ' ' + lastName;
    } else {
        return lastName;
    }
}
let tomcat = buildName('Tom', 'Cat');
let tom = buildName(undefined, 'Tom');

// index.ts(1,40): error TS1016: A required parameter cannot follow an optional parameter.

参数默认值

ES6中参数支持默认值,TS中同样支持默认值

function buildName(firstName: string, lastName: string = 'Cat') {
    return firstName + ' ' + lastName;
}
let tomcat = buildName('Tom', 'Cat');
let tom = buildName('Tom');

省略参数

//...items 代表省略参数,是一个数组
function push(array: any[], ...items: any[]) {
    items.forEach(function(item) {
        array.push(item);
    });
}

let a = [];
push(a, 1, 2, 3);

函数重载

重载允许一个函数接口不同数量不同类型的参数时候,做出不同的处理。重载样式如下

function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: number | string): number | string {
    if (typeof x === 'number') {
        return Number(x.toString().split('').reverse().join(''));
    } else if (typeof x === 'string') {
        return x.split('').reverse().join('');
    }
}

相关文章

  • TS基础(七)函数

    在JavaScript中函数是一等公民。有两种常见定义函数的方式,函数声明和函数表达式。函数声明和函数表达式还是有...

  • typeScript学习02

    typescript中的函数 ts中函数定义 ts中函数的传参 ts中的函数的可选参数(js中函数的形参和实参可以...

  • TS基础篇8:函数基础

    第一:基础语法 第二:参数 第三:重载(函数名一样,参数不一样)

  • Redux源码阅读_4

    applyMiddleware.ts 函数重载声明 首先是对applyMiddleware函数的重载,重载了七个函...

  • [学习笔记] TypeScript入门基础

    基础语法 ts程序组成部分 模块、函数、变量、语句和表达式、注释 一些注意 - ts会忽略程序中的空格、制表符和换...

  • TypeScript基础入门 - 函数 - 简介

    转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 为了保证后面的学习演示需要安装下ts-nod...

  • TypeScript基础入门 - 函数 - 重载

    转载 TypeScript基础入门 - 函数 - 重载 项目实践仓库 为了保证后面的学习演示需要安装下ts-nod...

  • TS: 函数

    函数是一种特殊的对象,可以被调用。TS 里的函数和原生,ES 6 里的函数差不太多,只是多了一些其他功能。 基础 ...

  • TypeScript基础入门 - 函数 - 剩余参数

    转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 为了保证后面的学习演示需要安装下ts-n...

  • TypeScript基础入门 - 接口 - 函数类型

    转载地址 TypeScript基础入门 - 接口 - 函数类型 项目实践仓库 为了保证后面的学习演示需要安装下ts...

网友评论

      本文标题:TS基础(七)函数

      本文链接:https://www.haomeiwen.com/subject/twjdnktx.html