在typescript或javascript中链接箭头函数

pho*_*att 3 javascript logic typescript arrow-functions

我在"Angular,第二版入门"一书中偶然发现了下面的箭头函数代码.

let isPrime: (n: number) => boolean = n => { 
// body 
};
Run Code Online (Sandbox Code Playgroud)

我想确认这个细分的正确性.

  1. let isPrime =函数名称"isPrime"
  2. (n: number) =输入参数号"n"
  3. => boolean =箭头函数检查布尔值(放置逻辑的地方)
  4. =n=我没有得到这一部分.这是否意味着如果我把"逻辑在第三步中找到素数"并且是真的,你得到满足我逻辑的"n"?
  5. => {} =我可以将返回或其他逻辑放在最后的过程中.

最后一个问题是有多少箭头功能对于链接或限制来说太多了?

我相信@Fenton对我的理解给出了明确的解释.

@Sebastien给了我答案,让我意识到我对箭头功能的错误解释; 等号和箭头符号并不总是指向函数,也可以表示数据类型.

以下是我接受的答案的组合版本.

类型

现在让我们描述这个函数的类型,它是一个数字,并返回一个布尔值.

//correct usage : return boolean
let isPrime: (n: number) => boolean = n => { 
    // body
    return true
};

//incorrect usage
let isPrime: (n: number) => boolean = n => { 
    // body
    return "wrong"
};
Run Code Online (Sandbox Code Playgroud)

简单

我想我会写如下,除非我有充分的理由使用箭头功能!

//correct usage : return boolean
function isPrime(n: number): boolean {
    // body
    return true;
}
//incorrect usage
function isPrime(n: number): boolean {
    // body
    return "wrong";
}
Run Code Online (Sandbox Code Playgroud)

我最后的测试是这样的.

let isRightLogic: (n: number) => { host: boolean } = n => { 
   return { host: true };
}
console.log(isRightLogic(1)); // always return true but you get the idea.
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 6

在您发布的代码中,(n: number) => boolean是正在创建的函数的类型签名.功能本身就是

n => {
  // body
}
Run Code Online (Sandbox Code Playgroud)

n是参数名,类型签名指示.因此,Typescript知道传递给函数的参数应该是数字,并且函数的返回值将是truefalse.

符号isPrime实际上不是正式意义上的函数名称; 它是一个变量,其值恰好是该函数.

在纯JavaScript中,变量声明将是juss

let isPrime = n => {
  // body
};
Run Code Online (Sandbox Code Playgroud)


Fen*_*ton 5

以下是一些其他观察方式,揭示了不同的观点.

这是旧学校,只是一个接受n应该是数字的函数,并且在某个地方它返回真或假.

let isPrime = function(n) { 
    // body 
};
Run Code Online (Sandbox Code Playgroud)

箭头功能

让我们使用箭头函数,而不是函数关键字(这里有一些行为改变,具体取决于函数体)...

let isPrime = (n) => { 
    // body 
};
Run Code Online (Sandbox Code Playgroud)

删除括号

我们在技术上不需要那些括号(虽然我认为可读性在没有它们的情况下会受到影响:

let isPrime = n => { 
    // body 
};
Run Code Online (Sandbox Code Playgroud)

类型

现在让我们描述这个函数的类型,它是一个数字,并返回一个布尔值.

let isPrime: (n: number) => boolean = n => { 
    // body 
};
Run Code Online (Sandbox Code Playgroud)

简单

我想我会写如下,除非我有充分的理由使用箭头功能!

function isPrime(n: number): boolean {
    // body
}
Run Code Online (Sandbox Code Playgroud)