- Hands-On Functional Programming with TypeScript
- Remo H. Jansen
- 358字
- 2021-07-02 14:03:12
Function types
We already know that it is possible to explicitly declare the type of an element in our application by using optional type annotations:
function greetNamed(name: string): string {
return 'Hi! ${name}';
}
In the previous function, we specified the type of parameter name (string) and its return type (string). Sometimes, we will need to specify the types of the function, as opposed to specifying the types of its components (arguments or returned value). Let's look at an example:
let greetUnnamed: (name: string) => string;
greetUnnamed = function(name: string): string {
return 'Hi! ${name}';
};
In the preceding example, we have declared the greetUnnamed variable and its type. The greetUnnamed type is a function type that takes a string variable called name as its only parameter and returns a string after being invoked. After declaring the variable, a function, whose type must be equal to the variable type, is assigned to it.
We can also declare the greetUnnamed type and assign a function to it in the same line, rather than declaring it in two separate lines, as we did in the previous example:
let greetUnnamed: (name: string) => string = function(name: string): string {
return 'Hi! ${name}';
};
Just like in the previous example, the preceding code snippet also declares a variable, greetUnnamed, and its type. greetUnnamed is a function type that takes a string variable called name as its only parameter and will return a string after being invoked. We will assign a function to this variable in the same line in which it is declared. The type of the assigned function must match the variable type.
In the preceding example, we have declared the type of the greetUnnamed variable and then assigned a function as its value. The type of function can be inferred from the assigned function and, for this reason, it is unnecessary to add a redundant type annotation. We have done this to facilitate your understanding of this section, but it is important to mention that adding redundant type annotations can make our code harder to read, and is considered a bad practice.
- Mobile Application Development:JavaScript Frameworks
- .NET 4.0面向對象編程漫談:基礎篇
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- Groovy for Domain:specific Languages(Second Edition)
- 軟件工程
- Unity Game Development Scripting
- 利用Python進行數據分析
- 響應式架構:消息模式Actor實現與Scala、Akka應用集成
- 細說Python編程:從入門到科學計算
- Serverless Web Applications with React and Firebase
- Java Web從入門到精通(第2版)
- RESTful Web Clients:基于超媒體的可復用客戶端
- 你好!Java
- 軟技能2:軟件開發者職業生涯指南
- C語言王者歸來