Learn TypeScript
Creating type aliases
Creating type aliases
In this lesson, we'll learn what a type alias is and the cases where they are useful.
Understanding the need for type aliases
In the last lesson, we created an object type to hold a name and a score:
const tomScore: { name: string; score: number } = { name: "Tom", score: 70,};const bobScore: { name: string; score: number } = { name: "Bob", score: 80,};const janeScore: { name: string; score: number } = { name: "Jane", score: 90,};
Wouldn't the code be more readable if we could somehow name { name: string; score: number; }
and use that name? So, something like:
const tomScore: Score = { name: "Tom", score: 70 };const bobScore: Score = { name: "Bob", score: 80 };const janeScore: Score = { name: "Jane", score: 90 };
Well, this is precisely what a type alias is!
A type alias is a name that refers to another type
The syntax for creating a type alias
We define a type alias as follows:
type TypeAliasName = ExistingType;
So, the type
keyword is placed before the chosen name for the type. The type that is being aliased is placed after the equals operator (=
).
The type alias name can then be used in type annotations:
let variable: TypeAliasName;
Using type aliases for primitives
We are going to explore type aliases in an exercise.
- Create a type alias for a string called
FirstName
.
- Create a type alias for a number called
PersonScore
.
- Add the following code which uses these types for
firstName
andpersonScore
variables:
let firstName: FirstName = "Tom";let personScore: PersonScore = 70;
Do any type errors occur?
Using for type aliases for primitives isn't that useful though - it is generally simpler to use the primitive type directly.
Using type aliases for functions
Type aliases can be used for arrow functions:
type TypeAliasName = (paramName1: paramType1, ...) => ReturnType;
- Copy the function below and paste it in the code editor:
const log = (message: string) => { console.log(message);};
- Create a type alias called
Log
that represents this function.
- Add
Log
in a type annotation to the function:
Optional parameters can be added to function type aliases using a question mark (?
) before the parameter type annotation:
type TypeAliasName = ( ..., optionalParam?: optionalParamType) => ReturnType;
- Add an optional
category
parameter to theLog
type of typestring
.
Do any type errors occur on the log
function after the update to the Log
type?
Good stuff, we are gaining a good understanding of type aliases now!
Using type aliases for objects
Type aliases are handy for objects. We will create a type alias for the Score
example mentioned at the start of this last lesson.
- Copy and paste the code from below into the code editor:
const tomScore: { name: string; score: number } = { name: "Tom", score: 70,};const bobScore: { name: string; score: number } = { name: "Bob", score: 80,};const janeScore: { name: string; score: number } = { name: "Jane", score: 90,};
- Write the code for a
Score
type alias, just before the code we just pasted in.
- Now update the score variable declarations to use the
Score
type.
Optional object members can be added to object type aliases using a question mark (?
) before the member type annotation.
- Add an optional boolean
pass
property to theScore
type.
Do any type errors occur on the variables we gave the Score
type now?
Methods within the object can also be declared in an object type alias.
- Add a
log
method of typeLog
to theScore
type alias.
Do any type errors occur on the variables we gave the Score
type now?
- Add a
log
method to the three score variables that reference thelog
variable we created earlier in this lesson.
The type errors will now disappear.
Nice!
Summary
A type alias is a name given to an existing type. They can help the readability of our code. They also give us a mechanism of reusing a type in several places of our code.
Good stuff!
In the next lesson, we’ll learn an alternative method of creating object types.