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

时间:2020-05-09 06:12:00

标签: typescript interface casting

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))

1 个答案:

答案 0 :(得分:0)

是的,可以通过以下两种方式在Typescript中定义自定义函数类型

第一种方式:

type SomeFunction = (arg1: string, arg2: number) => void;

第二种方式:

interface SomeFunction {
(arg1:string, arg2:number):void
}


然后我们可以在定义函数时使用此自定义函数类型,如下所示

const newFunction:SomeFunction = (arg1,arg2) => { console.log(arg1,arg2) }