两个具有静态返回类型的 TypeScript 函数。语法不同,但它们似乎做同样的事情?

Posted

技术标签:

【中文标题】两个具有静态返回类型的 TypeScript 函数。语法不同,但它们似乎做同样的事情?【英文标题】:Two TypeScript functions with static return types. Syntax differs, but they seem to do the same thing? 【发布时间】:2020-02-03 19:39:07 【问题描述】:

我正在学习 TypeScript,并试图定义一个具有静态返回类型和一些静态参数的函数。这两个定义似乎都这样做,但语法不同。为什么?这些在我想念的某些方面有什么不同吗?

// function with statically typed parameters and return type defined
function addNums(n1: number, n2: number, n3: number): void 

    let sum = n1 + n2 + n3;
    alert(sum);


// This seems to accomplish the same thing but needlessly more complex
let alsoAddNums : (one: number, two: number, three: number) => void 
    = function(n1, n2, n3) 
    
        let sum = n1 + n2 + n3;
        alert(sum);
    

【问题讨论】:

【参考方案1】:

第一个是函数定义,第二个是变量,分配了一个函数。如果您需要存储对函数的引用,这就是您所做的:

function addNums(n1: number, n2: number, n3: number): void 

    let sum = n1 + n2 + n3;
    alert(sum);


let alsoAddNums : (one: number, two: number, three: number) => void = addNums

与它们的交互是相同的。

【讨论】:

谢谢,这是有道理的。当您可以直接调用函数时,为什么要存储引用?在我看来,您仍然需要在使用引用时添加所有相同的参数。 例如,对于高阶函数是必需的。 好的,明白了。非常感谢。 如果您满意,请不要忘记接受答案。

以上是关于两个具有静态返回类型的 TypeScript 函数。语法不同,但它们似乎做同样的事情?的主要内容,如果未能解决你的问题,请参考以下文章

具有通用联合约束的 TypeScript 函数返回值

TypeScript 具有相同参数的多种返回类型

具有多种类型的函数声明

TypeScript:继承类中静态方法的自引用返回类型

TypeScript 的 generic 区别是什么?

TypeScript 中的函数重载与使用联合类型