是否可以在Typescript中定义自定义函数类型

const obj: Person = { first: 'John', last: 'Thomas'};
interface Person {
first: string;
last: string;
}

为了指定一个对象具有first和last属性,我们将其指定为Person类型,在Typescript For ex中是否有类似的功能可供使用。

const Fun1:(p:Person)=>void = (p) => {
    console.log('first function',JSON.stringify(p))
}

const Fun2:(p:Person)=>void = (p) => {
    console.log('second function',JSON.stringify(p))
}

console.log(Fun1(obj))
console.log(Fun2(obj))

Fun1和Fun2是相同类型的函数,因此我们可以像这样在TypeScript中定义某种类型

type Function1 = (p:Person)=> void

const Fun1:Function1 = (p) => {
    console.log('first function',JSON.stringify(p))
}

const Fun2:Function1 = (p) => {
    console.log('second function',JSON.stringify(p))
}

console.log(Fun1(obj))
console.log(Fun2(obj))