函数类型声明与接口中约束函数类型问题
来源:2-18 声明文件 第二部分
ForCoke
2022-04-20
1、老师,我们进行类型声明的时候后可以采用:
let add: (n1: number,n2: number): number;
let add1: (n1: number,n2: number) => number;
这两种声明方式究竟有什么不同呢?
2、为什么我们在用接口约束函数的时候,只能:
interface MyInter{
(n1: number,n2: number): number;
}
而不能:
interface MyInter{
(n1: number,n2: number) => number;
}
3、同时在本节课中,我们在接口中定义属性,属性值为函数类型时:
interface MyInter{
(n1: number,n2: number): number;
plus: (numbers: number[]) => number;
//能不能:
minus: (numbers: number[]): number;
}
写回答
2回答
-
张轩
2022-04-21
同学你好
假如是直接声明函数形式:你 let add: (n1: number,n2: number): number; 的这个格式是错误的,只能是是第二种格式。
同理使用interface描述函数,只能是
interface MyInter{ (n1: number,n2: number): number; }
这种格式。
其实这没有什么原因,只是硬性规定而已。记住就好了。
3 因为JavaScript是灵活多变的,所以函数上面也能有属性,第三种方式就是描述了这种混合的类型。
012022-04-21 -
希望林柚一健康快乐成长
2022-04-21
您好,好奇怪,为啥消息通知让我来回答。。。
其实你疑问的时候,我把你的代码放到vscode中了,是会报错的,我理解的是定义函数类型的时候,用箭头,而你给函数具体的函数体的时候,用 : 号,这只是ts的语法,,更多查看官网说明https://www.typescripttutorial.net/typescript-tutorial/typescript-function-types/,希望能帮到你
032022-04-21
相似问题