欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TS——总结函数类型的定义方法

程序员文章站 2022-04-03 22:26:04
...

1 函数声明的类型定义

function say(person: string, content: string): boolean { 
    if (person === '' || content === '') return false;
    console.log(`${person}say:${content}`);
    return true;
}

延伸出——对象方法新写法下的类型定义

const somebody = {
    say (person: string, content: string): boolean { 
        if (person === '' || content === '') return false;
        console.log(`${person}say:${content}`);
        return true;
    }
};

2 函数表达式的类型定义

函数表达式类型的写法有三种:

  • 一种类似 1 的写法,将类型定义的代码都嵌入到函数定义里边
const say = function (person: string, content: string): boolean { 
    if (person === '' || content === '') return false;
    console.log(`${person}say:${content}`);
    return true;
};

  • 一种是先使用 type 别名定义函数的类型,然后借助类型推导,完成对函数的定义。
type sayType = (person: string, content: string) => boolean;
var say: sayType = function (person, content) { 
    if (person === '' || content === '') return false;
    console.log(`${person}say:${content}`);
    return true;
};

  • 一种是使用接口定义函数的类型,思路同上,借助类型推导。注意,接口名首字母要用大写。
interface Say { 
    (person: string, content: string): boolean;
}
const say: Say = function (person, content) { 
    if (person === '' || content === '') return false;
    console.log(`${person}say:${content}`);
    return true;
};

延伸出——箭头函数的类型定义方法

箭头函数通常写成函数表达式的形式:

const say = () => {};

所以箭头函数的类型定义,就与函数表达式的非常相似,完全可以使用上边的三种方法定义类型,这里就写出嵌入函数里边的写法:

const say =  (person: string, content: string) => { 
    if (person === '' || content === '') return false;
    console.log(`${person}say:${content}`);
    return true;
};

总结:好像函数声明式及其衍生形式只能采用嵌入函数里边的写法,而函数表达式的写法有很多种,比较灵活。