Javascript 如何在TypeScript中使用函数类型
我试图理解如何使用“函数类型” 假设我们有以下几点:Javascript 如何在TypeScript中使用函数类型,javascript,typescript,Javascript,Typescript,我试图理解如何使用“函数类型” 假设我们有以下几点: function calSum(val1: number, val2: number): number{ return val1 * val2; } console.log(calSum(10,20)); //prints 200 calc(10,20); 现在让我们假设我们有: let calc: (value1: number, value2: number) => number; 如果我这样做: function c
function calSum(val1: number, val2: number): number{
return val1 * val2;
}
console.log(calSum(10,20)); //prints 200
calc(10,20);
现在让我们假设我们有:
let calc: (value1: number, value2: number) => number;
如果我这样做:
function calSum(val1: number, val2: number): number{
return val1 * val2;
}
console.log(calSum(10,20)); //prints 200
calc(10,20);
我希望看到200个,但我得到以下错误:
Uncaught TypeError: calFuncType is not a function
我想了解这是为什么,以及如何使用此类型?此:
let calc: (value1: number, value2: number) => number;
汇编成:
let calc;
也就是说,您只声明了一个具有名称的变量,但没有为其赋值
以下是如何为其指定值:
let calc: (value1: number, value2: number) => number = function(val1: number, val2: number): number{
return val1 * val2;
}
编译器可以推断类型,因此这就足够了:
let calc = function(val1: number, val2: number): number{
return val1 * val2;
}
或者,使用箭头功能:
let calc = (val1: number, val2: number) => val1 * val2;
这:
汇编成:
let calc;
也就是说,您只声明了一个具有名称的变量,但没有为其赋值
以下是如何为其指定值:
let calc: (value1: number, value2: number) => number = function(val1: number, val2: number): number{
return val1 * val2;
}
编译器可以推断类型,因此这就足够了:
let calc = function(val1: number, val2: number): number{
return val1 * val2;
}
或者,使用箭头功能:
let calc = (val1: number, val2: number) => val1 * val2;
在您的示例中,
calSum
是函数的具体实现,而calc
是一个尚未赋值的变量,因此它是未定义的
。您已经指定了calc
可以保存的值的类型,但实际上尚未为其指定值
我认为您可能正在寻找的是如何为函数定义接口,然后实现该接口。例如:
interface CalcFunction {
(value1: number, value2: number): number;
}
let multiply: CalcFunction = (a, b) => a * b;
let add: CalcFunction = (a, b) => a + b;
let product: number = multiply(3, 5);
let sum: number = add(3, 5);
console.log(product); // 15
console.log(sum); // 8
TypeScript将知道乘法
和加法
都使用两个数字
参数并返回一个数字
,因为它们都显式实现了CalcFunction
接口
然后,例如,您可以执行以下操作:
let calculate = (calc: CalcFunction, a: number, b: number): number => {
return calc(a, b);
}
在您的示例中,
calSum
是函数的具体实现,而calc
是一个尚未赋值的变量,因此它是未定义的
。您已经指定了calc
可以保存的值的类型,但实际上尚未为其指定值
我认为您可能正在寻找的是如何为函数定义接口,然后实现该接口。例如:
interface CalcFunction {
(value1: number, value2: number): number;
}
let multiply: CalcFunction = (a, b) => a * b;
let add: CalcFunction = (a, b) => a + b;
let product: number = multiply(3, 5);
let sum: number = add(3, 5);
console.log(product); // 15
console.log(sum); // 8
TypeScript将知道乘法
和加法
都使用两个数字
参数并返回一个数字
,因为它们都显式实现了CalcFunction
接口
然后,例如,您可以执行以下操作:
let calculate = (calc: CalcFunction, a: number, b: number): number => {
return calc(a, b);
}
因为您正在为
calc
(foo:type
)设置类型,而没有赋值(foo=value
)。啊,我现在明白您的意思了!我没有将函数分配给函数类型变量@jonrsharpeShouldn,它不是让calc=(value1:number,value2:number)=>value1*value2
?您实际上并没有创建函数。您正在定义一个类型。我真的不知道该怎么说。因为你正在为calc
(foo:type
)设置类型,而不是赋值(foo=value
)。啊,我现在明白你的意思了!我没有将函数分配给函数类型变量@jonrsharpeShouldn,它不是让calc=(value1:number,value2:number)=>value1*value2
?您实际上并没有创建函数。您正在定义一个类型。我真的不知道该怎么说。谢谢,是的,我明白了谢谢,是的,我明白了