Learn Functions In TypeScript

Learn Functions In TypeScript


In this blog, we are going to learn about various kind of functions used in TypeScript. Functions are core of any programming language.

Functions are used to write readable, maintainable and reusable code of blocks in any programming language. Function is a set of statements in a block to perform specific tasks in any application.

Functions are declared once, and called many times in an application. Let’s have a quick look, how a function works?

How functions works?

These are the things related to functions, which defines how a function works in any application.

  • Defining a function

In order to use any function, first of all, we have to define that function. A function definition specifies what and how a specific task will be done. Let’s see how to define a basic function in our TypeScript.


  • Parameterized function

We can pass any number of parameters in a function. Parameters are the values, which are passed by caller of a function to the function. The function then perform some operations on these passed parameter values.



  • Returning function

The function, which returns value to the caller function, are called Returning function.



  • Calling a function

To execute a function, we should call it. This process is called as function Invocation.




So, In the above lines, we learned about the basics of functions. Let’s go into the details of function’s parameters. Basically, we  can pass three types of parameters into the function. These parameter types are following:

  • Optional Parameters
  • Default Parameters
  • Rest Parameters

Optional Parameters

Sometimes, we want to keep some parameters optional. Therefore, we can declare them optional parameter in a function. In order to make a parameter optional, append question mark (?) at the end of the parameter. The optional parameter must be the last parameter in a function.


function functionname (param1[:type], param2[:type], param3[:type])


In the above example, we declare city as optional parameter. Therefore, we have appended question mark (?) at the end of the parameter name. Also, if you notice, we declared it at the end of the parameter list.

There are 2 function calls.

  • In the first call, caller is passing only of 2 parameters like funcDetail(9876,"Victor").These are id and name parameter, and skipping the city parameter name.
  • In the second call, caller is passing all of 3 parameters like funcDetail(111,"John","New York City"). These are id, name and city.

Default Parameters

We can assign some default values to function parameter. If no value passed from caller function, then default value will be assigned to function parameter.


function functionname(param1[:type],param2[:type] = default_value) { }


In the above example, we defined secondnumber as default parameter. If no value is passed in secondnumber, then default value of 2 will be passed in function.

There are 2 function calls.

  • In the first call, caller is passing one parameter to function like multiply(1000)
  • In the second call, caller is passing both parameters to function like multiply(1000,4)

Rest Parameters

Sometimes, you want to send multiple parameters to a function. But, you are not sure about how many parameters you would send. So, using the Rest parameters, you can send as many as parameters of same type to a function.

To define a rest parameter, parameter name must start with three dots (…). This must be in the end of all parameters in a function.

Javascript will build an array of this Rest parameter, and allow you to work with this rest parameter.


function functionname(param1[:type],…param2[:type[]]) { }


In the above example, we have prefixed three dots(…) before nums parameter. And inside the function, it is converted to an array. We added the values of all array element, and print the sum of nums parameter.

There are 2 function calls.

  • In the first call, caller is passing 3 parameters to function like sumOfNumbers(1,2,3)
  • In the second call, caller is passing 5 parameters to function like sumOfNumbers(10,10,10,10,10)

Anonymous Function

Unlike normal functions, Anonymous functions does not have any function name. They are dynamically declared at runtime. Like standard function, anonymous function can accept inputs and return outputs. Anonymous functions are created using the function operator.

Anonymous functions can be assigned to a variable.



In the above example, we have created an anonymous function. myFunc is a variable, and it is holding function body. myFunc() is used to call this anonymous function.

Example – Passing parameters to anonymous function

Anonymous function can take and return the parameters like the normal functions.

Lambda (Fat Arrow) Function

Lambda function is a concise method to represent anonymous functions. It is also called Fat Arrow function. Fat Arrow function is represented by an arrow (=>). We don’t need to use function keyword in Lambda function.


( [param1, parma2,…param n] )=>statement;

Example – Lambda function in a single line

In the above example, we have created our fat function in a single line. It is very concise and short. This function accepts a numeric input and add it to the 100.

Example – Lambda function in multiple lines

Lambda function can span to multiple lines as well. You can create a block of statements in lambda function.



Here, we created a multiple lines lambda function.

Lambda Function’s Syntax Variations

Parameter Type Inference

You can skip defining the datatype of a parameter. In this case, datatype of the parameter will be Any.


No parenthesis for a single parameter


Empty parenthesis for no parameter



In summary, we learned about what are functions in Typescripts. How functions are constructed with different parameters. We learned about Anonymous function, without the function name. We learned about magic function of TypeScript. This is called Lambda or Fat Arrow functions, with different variations in their syntax.

I hope you enjoyed reading this blog.

Read more:


Hi, I am Adesh. I am a senior software engineer having more than 12 years of software development experience. I am a full stack developer and interested in writing the technical post on programming. I am currently working in New York City area.

This Post Has 5 Comments

  1. Frieda

    Great job. Your explanation are very straight to the point. Keep it up

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.