10X Sale
kh logo
All Courses

Introduction

We have curated the most important typescript interview questions and answers for the year 2025. This article is one best preparation source for typescript coding interview questions as well as conceptual questions. In this Article, we have covered the most important typescript interview questions for experienced as well as beginner programmers. The interviewers typically ask these questions while asking about frameworks, such as react and angular typescript interview questions. The article categorizes all the interview questions on typescript among three categories: basic, intermediate, and advanced questions.

TypeScript Interview Questions and Answers for 2025
Beginner

1. What are Types in TypeScript?

The values we assign to a variable in our program have a specific type, which is represented by types in TypeScript. In TypeScript we have support for a wide range of value types, including strings, Boolean, numbers, in addition to other types like enum, any, never, unknown and many more.

Declaring types explicitly in TypeScript is advantageous for a number of reasons. Types make code more readable and clearer, and they can also help your compiler identify issues that result from improper type assignments. Additionally, Types provide as an additional layer of documentation that might be useful when working in a team context.

To explicitly declare a type in TypeScript, you can append the ‘:’ after the variable name, following the Type of the assigned value. For example,

let stringVariable : string = "This is a string"; 
let numVariable : number = 2; 
let booleanVariable : boolean = true;  

2. What do you understand about object oriented programming?

Object-oriented programming (OOP) is a computer programming style that organises software design around objects (or data), instead of functions and logic. An object is a data field with characteristics and behaviour.

Large, sophisticated, and actively updated or maintained programmes enjoy many benefits by using Object oriented programming style, for instance, large desktop applications, manufacturing system simulation software, and many more. Additionally, it makes the software easy to collaborate and distributed among small teams.

The OOP is based on four main principles; Encapsulation, Abstraction, Inheritance, and Polymorphism. This brings many benefits to the software in terms of reusability, scalability, and efficiency.

3. Does TypeScript follows all the principles of Object-oriented programming?

Yes, Typescript supports all the four principles Encapsulation, Abstraction, Inheritance, and Polymorphism of Object-oriented programming paradigm.

Encapsulation: Encapsulation is a technique for organising code and an essential element of object-oriented programming. According to this principle, an object contains all the critical information, with only a small subset of it being exposed outside.  

Inheritance: Inheritance simply means that the Classes can reuse code from other classes. This enables developers to reuse common programming logic while still preserving a distinctive hierarchy. An inheritance chain and object model can be easily created with TypeScript.

Abstraction: Objects conceal any extraneous implementation code and only expose internal mechanisms that are necessary for the use of other objects. The derived class can typically extend the functionality of the base class. This approach makes it simpler for developers to introduce new features or make future modifications.

Polymorphism: When many classes from the same parent override the same functionality, this is known as polymorphism. Each newly created child class adds to the functionality of the parent class by implementing its own special properties or methods or by customising the base class's properties or methods to suit the needs of the child class.

4. How can we achieve Encapsulation in TypeScript?

Encapsulation is a technique for organising code and a key element of object-oriented programming. According to this principle, an object contains all the critical information, with only a small subset of it being exposed outside.  

In other words, each object's implementation and state are kept secretly inside a defined class. This class is not accessible to other objects, nor do they have the power to modify it. Only a limited set of object members with public access are available outside the class. Thus, it creates an encapsulation for the private data.
For instance, let us create a Worker class, all the class members are public by default in TypeScript. But we can provide access modifiers (public, private, protected) to prevent other entity from accessing or modifying them outside the parent class scope.

class Worker { 
 name: string; 
 private _salary: number; 
 
 constructor(name: string, salary: number) { 
  this.name = name; 
  this._salary = salary; 
 } 
 getSalary() : number { 
 return this._salary; 
 } 
} 
 
const john = new Worker("John"50000); 
console.log(john._salary) // Property '_salary' is private and only accessible within class 'Worker'. 
console.log(john.getSalary()) //50000 

We can also use getters and setters methods to achieve better encapsulation in Typescript. This data hiding provides greater program security and avoids unintended data corruption.

5. What is functional programming?

Functional programming means using functions to the best effect for creating clean and maintainable software. It is a declarative programming style, that puts more emphasis on “what to solve” in contrast to “how to solve”.

Functional programming highly depends upon the concept of Pure functions. A pure function is one whose outcomes depend only on the input variables and whose operation has no side effects to the outside world, aside from the return value.

Another important idea behind functional programming is immutability, i.e., avoid modifying the data outside the function, this is a way of avoiding side effects. In other words, only the function's return value should reflect the work that was done, and function input arguments should be copied, not changed. 

Beyond the pure function ideal, functional programming depends on first class functions and higher order functions in actual coding practise.  

  • A first-class function is one that is handled as an entity capable of standing on its own and receiving independent treatment. Functional programming utilizes functions as variables, parameters, and return values 
  • A higher-order function manipulates a function, it takes a function as an argument or returns a function.  

You can join us and find the best online computer Programming courses to start your dream career. 

Want to Know More?
+91

By Signing up, you agree to ourTerms & Conditionsand ourPrivacy and Policy

Description

How to Prepare for TypeScript Interview Questions?

Remember that technical expertise and knowledge make up only a small portion of the hiring process. To ensure that you get the job, soft skills, and prior experiences are equally crucial.

Divide your learning materials into portions, then take a quiz or mock interview after each section.

The behavioural interview is just as crucial as the coding part, so prepare for it accordingly; record yourself and correct small nuances that you can improve, for example, make eye contact, be mindful of your breath to overcome nervousness, etc.

Read about other related technologies and make sure that you are keeping up with the current technological trends, as the interviewer expects you to have the knowledge and some interest in your industry. Find more useful material in our Typescript course and learn from the experts to aid your developer journey.

This article will help you for job roles like:

Many startups and MNCs like:

  • Microsoft,
  • Facebook,
  • AlphaSights
  • Google and many more ask typescript questions in their interviews.

Tips for Preparing for TypeScript Questions

It is best to not only read these questions but to practice them a couple of times. Once you are confident about an explanation, write down the answers in your words, try to code everything yourself, and practice them in a mock interview with your friends.

What to Expect in TypeScript Interview Questions?

One must remember that most interview questions are open-ended, and there is typically more than one valid response to a TypeScript interview question. Interviewers are actually interested in the rationale behind your responses. Be ready for follow-up inquiries about how you arrived at your response, and always be able to explain your thought process.

Summary

We hope these TypeScript interview questions are helpful to you, whether you are a developer getting ready for an interview or a hiring manager trying to find the right applicant.

TypeScript is a superset of JavaScript and supports all JavaScript features. Any JavaScript code can be quickly converted to TypeScript by simply changing the file extension from .js to .ts.

Compared to JavaScript's dynamic typing, TypeScript's static typing makes it more structured and simpler to read. Developers like typescript because it helps them write faster and more error-free code, along with other powerful features due to its statically typed nature. Code written with TypeScript is more dependable and easy to edit than JavaScript.

The tsconfig.json file contains information about the root file and the necessary compiler options for the compilation of the project. JavaScript projects can utilize a jsconfig.json file (similar to tsconfig.json for Typescrip) which performs nearly the same functions but has several JavaScript-related compiler options enabled by default.

Tsconfig.json files are ignored when input files are invoked with tsc command on the command line terminal.

tsc index.ts

This command will emit the output data after compilation and transpilation to a file called index.js, which is generally present in the built folder of your project.

The .map TypeScript file is used to convert the human-unreadable trans-compiled JavaScript back to readable TypeScript format. In Typescript, there are two kinds of .map files, namely Source Map (.js.map) and Declaration Map (.d.ts.map).

Each section of your generated JavaScript code is linked to the exact line and column of the corresponding Typescript file, using JSON-formatted mapping definitions found in source map (.js.map) files.

Declaration source maps (.d.ts.map) files include mapping definitions that connect each of the type declarations created in.d.ts files back to your original source file (.ts). The mapping definitions in these files are in JSON format.

There are three distinct access modifiers for an object member in TypeScript:

  • Public: A class that is public can be accessed by all of its members, including its child classes and class instances.
  • Private: Private denotes that a class's members can only access one another.
  • Protected: When a class is marked as protected, all of its members and the members of its children classes can access it, but the class instance cannot.

TypeScript definition Manager or TSD is a file package manager for TypeScript that allows you to easily download and install definition files to use in TypeScript projects. TSD makes it very easy to find and install TypeScript definition files of many public APIs, libraries, etc., from the free and open-source DefinitelyTyped repo.

Recommended Courses

Learners Enrolled For
CTA
Got more questions? We've got answers.
Book Your Free Counselling Session Today.
 \n  In your HTML, the dataLayer array is declared. However, your TypeScript programme does not know about it. If you wish to utilize the dataLayer array, you must declare it in a .d.ts file.declare const dataLayer: any[]; Similarly, to use any other external code, we must declare it first and inform the TypeScript Compiler. For example: declare module '*.png' { \n const src: string; \n export default src; \n} \ndeclare function greet(hello: string): void; We should be cognizant that the ambient declarations occasionally lead to problems because your compiler will produce an error if the source changes. Thus, to prevent such errors if the location of your external source code changes, you must update all of your ambient declarations."}},{"@type":"Question","name":"What is the TypeScript Definition Manager?","acceptedAnswer":{"@type":"Answer","text":"TypeScript definition Manager or TSD is a file package manager for TypeScript that allows you to easily download and install definition files to use in TypeScript projects. TSD makes it very easy to find and install TypeScript definition files of many public APIs, libraries, etc. from the free and open-source DefinitelyTyped repo. TSD is quite helpful because it enables you to use type definition files directly in your TypeScript code. For instance, you could use the following syntax to add some jQuery code to your.ts file:$(document).ready(function() { //Your jQuery code });Your compiler will inform you that it cannot locate the name \"$\", due to the fact that this type is a part of jQuery. You may use TSD to locate and download the jQuery Type Definition file, which you can then include in your.ts file, and your compiler will have everything it requires. "}},{"@type":"Question","name":"Name and explain the two essential flags you must know to allow strictness in TypeScript.","acceptedAnswer":{"@type":"Answer","text":"It's no surprise that this one pops up often in Angular TypeScript interview questions.  Your code can benefit from comprehensive inspections and more precise tooling thanks to TypeScript's strictness settings. The more you tweak your parameters, the more rigorously TypeScript evaluates your code. There are a number of type-checking flags available in TypeScript that can be turned on or off. The two most crucial to remember are:noImplicitAny: TypeScript assigns any type whenever we don't define a specific type in our code. If this flag is set to true, variables whose type is implicitly assumed to be any will produce an error. This flag is mainly useful because using the type any negates the purpose of adopting TypeScript over JavaScript in the first place.We add the following code in our tsconfig.json, to mark the noImplicitAny flag true in our TypeScript project.{ \n \"compilerOptions\" : { \n \"noImplicitAny\" : true \n } \n} strictNullChecks: This flag makes the handling of null and undefined data more explicit and rigorously verifies that we are handling all the null and undefined variables in our TypeScript code. When the strictNullChecks is false, the typescript compiler ignores the null and undefined values, this can throw unexpected errors at runtime. Whereas when the strictNullChecks is true, the typescript compiler handles the null and undefined as their own unique types. Thus, it will show a type error if you try to use them where a concrete value is expected. Use the following code in your tsconfig.json to mark strictNullChecks as true.{ \n \"compilerOptions\" : { \n \"strictNullChecks\" : true \n } \n}  "}},{"@type":"Question","name":"Briefly explain each line of code in the following tsconfig.json file.","acceptedAnswer":{"@type":"Answer","text":"{ \n \"compilerOptions\": { \n \"outDir\": \"./built\", \n \"allowJS\": true, \n \"target\": \"es5\" \n }, \n \"include\": [\"./src/**/*\"] \n  \n}  The code snippet is taken from the tsconfig.json file, which is found at the root of every TypeScript project. It is used to administer the project's settings, including which files to include and what kinds of checking we want to conduct, among other things. compilerOptions - This comprises the majority of TypeScript's configuration choices and gives us control over how the language should operate internally. Additionally, the code snippet also illustrates some of the various settings that are available inside it. \"outDir\": \"./built\" - When this key is provided, the compiler will push the output file (production code files) into the directory listed in this key's value. This piece of code tells the computer to \"emit all of the output files in the built folder.\" The project will be organized as follows. ├── built \n│ └── index.js // output .js file \n├── index.ts // input .ts file \n└── tsconfig.json  Unless otherwise provided, the compiler will produce output.js files in the same directory as the input.ts files, such as:  src \n├── index.js \n└── index.ts  \"allowJS\": true - This boolean code allows us to also use JavaScript files as our input files along with .ts files in our typescript project. Since here the boolean is true, this key allows .js files to be imported inside our project instead of just .ts and .tsx files. The following code will cause an error if this key is set to \"false\":  // greetings.js \nexport const morningGreeting = \"Good Morning\"  // index.ts \nimport { morningGreeting} from \"./greetings\" \nconsole.log(morningGreeting) \"target\": \"es5\" - This line of code directs the translation of the program written in more recent JavaScript syntax into the syntax of an earlier version, such as ECMAScript 5 (\"es5\"). \"include\": [\"./src/**/*\"] - This expression essentially means to read in any files it understands from the src directory. Here the “include” key simply defines a list of filenames or regex patterns."}},{"@type":"Question","name":"Assume there is a class decorator named someDecorator and you wish to add an option that may be selected when invoking the decorator, such as a boolean flag. Create a function with decorator factories and pass its parameter on the Animal class.","acceptedAnswer":{"@type":"Answer","text":"In TypeScript, decorators are declarations that can be attached as a prefix to class declarations, methods, accessors, properties, or parameter declarations. They are written as a \"@expression,\" and evaluate some function that gets invoked during the runtime. In the question, a class decorator is declared just above a class declaration. This decorator will use the class constructor as its target and is usually good to observe, modify or replace the class declaration. Although Decorator Factories are functions that return another function and do not actually implement the decorator, the returned function oversees doing so and should assume the responsibility of a wrapper function.In the question, we have a class decorator `someDecorator`, by using a decorator factory, we can write it as:const someDecorator = function (canSwim: boolean) { \n return (target: Function) => { \n // some function logic \n console.log(`The animal ${canSwim ? ‘can’ : ‘cannot’} swim`) \n } \n}The decorator ‘someDecorator’ takes one parameter and returns another function that implements the decorator itself. The value of the boolean parameter (either true or false) can now be passed to a Person class as follows:  const someDecorator = function (canSwim: boolean) { \n return (target: Function) => { \n // some function logic \n console.log(`The animal ${canSwim ? 'can' : 'cannot'} swim`) \n } \n} \n \n@someDecorator(true) \nclass Animal {}  "}},{"@type":"Question","name":"You have two typescript files calculate.ts and main.ts, Explain the result of maths.doSubtract(12, 5) if it returns the difference of the given numbers?","acceptedAnswer":{"@type":"Answer","text":"// calculate.ts \ndeclare module CalculateModule { \n export class Maths { \n doSubtract(numA: number, numB: number): number; \n } \n} \n \n// main.ts \nvar maths = new CalculateModule.Maths(); \nmaths.doSubtract(12, 5) In the given program files, we are using the `Ambient` declaration, which informs the compiler that the actual piece of code exists elsewhere at a different file location. To write an Ambient declaration we use the following syntax:declare module moduleName { \n// module data \n}  Thus, the code sample provided to us in the question is coming from the module \"CalculateModule,\" which exports the \"Maths\" class. The “Maths” class contains “doSubtract()” function which accepts two parameters numA and numB of the number type and returns a number.This Ambient declaration is now being used in the Main.ts file when we construct a new instance maths of the Maths class. Maths.doSubtract(12, 5) will return 7 as 12 - 5 = 7 as the result of main.ts."}},{"@type":"Question","name":"Explain the code given below. What other type of acquisition properties are available in typescript?","acceptedAnswer":{"@type":"Answer","text":"{ \n \"typeAcquisition\": { \n \"enable\": false \n } \n}  The above code shows TypeScript's Type Acquisition functionality, which is only required for JavaScript projects. In the configuration, we are deactivating the type acquisition for JavaScript projects by setting the 'enable' value to 'false'.Typically, we must explicitly include the types in our TypeScript projects. However, the TypeScript tooling downloads all the types of modules we use in the background for JavaScript projects. The other \"typeAcquisition\" properties available in TypeScript are as follows: include - Using this, we define an array containing all the types we want to utilize in our project from the DefinitelyTypes. For instance:{ \n \"typeAcquisition\": { \n \"include\": [\"jquery\", \"jest\"] \n } \n}  \nexclude - Here, this provides the option to turn off type-acquisition for a specific module or an array of modules in JavaScript projects. For instance:{ \n \"typeAcquisition\": { \n \"exclude\": [\"mocha\"] \n } \n}  disableFilenameBasedTypeAcquisition - This is a boolean that controls whether TypeScript should use the filenames available in the project to infer what types should be added. This is how we can incorporate it:{ \n \"typeAcquisition\": { \n \"disableFilenameBasedTypeAcquisition\": true \n } \n} "}},{"@type":"Question","name":"What is Resolution-mode introduced to TypeScript in version v.4.7. Why is it required?","acceptedAnswer":{"@type":"Answer","text":"In version 4.7 of TypeScript, it introduced the triple-slash directives to contain the resolution-mode attribute. This is how it appears syntactically:///  \n// or \n///  Previously, the mode of containing files and the syntax we employed determined how imports were resolved in the project when utilizing Node's default ECMAScript resolution. However, using \"resolution-mode,\" we are now able to refer to the types of CommonJS modules from an ECMAScript module or vice-versa.Additionally, you may use \"import type\" to define an import assertion like: // Resolve `pkg` as if we were importing with a `require()` \nimport type { TypeFromRequire } from \"pkg\" assert { \n \"resolution-mode\": \"require\" \n}; \n \n// Resolve `pkg` as if we were importing with an `import` \nimport type { TypeFromImport } from \"pkg\" assert { \n \"resolution-mode\": \"import\" \n}; \n \nexport interface MergedType extends TypeFromRequire, TypeFromImport {}  "}},{"@type":"Question","name":"Can you identify a problem with the contactForm object given the following generic Form interface? If yes, then correct the given program and explain why a type error does not occur here.","acceptedAnswer":{"@type":"Answer","text":"interface Form { \n values: T; \n errors: any; \n} \n \nconst contactForm: Form<{name: string; email: string}> = { \n values: { \n name: \"John\", \n email: \"john@email.com\" \n }, \n errors: { \n emailAddress: \"Invalid email address.\" \n } \n}  The code given to us in the question employs a generic Form interface and uses this interface as the type of the contactForm variable. However, the errors property in the contactForm refers to a field with the wrong name. It should be “email” as defined in the Form interface, instead of the current “emailAddress” property. Hence here is the fixed program:interface Form { \n values: T; \n errors: any; \n} \n \nconst contactForm: Form<{name: string; email: string}> = { \n values: { \n name: \"John\", \n email: \"john@email.com\" \n }, \n errors: { \n email: \"Invalid email address.\" \n } \n} Because the errors property's type is set to any on the Form interface, we do not get a type error. There will be no type-checking as the consequence. We utilize the type 'any' whenever we do not want a specific value to result in type-checking issues.  "}},{"@type":"Question","name":"What is a '.map' file in TypeScript, and why/how can you use it?","acceptedAnswer":{"@type":"Answer","text":"The Map TypeScript file in your TypeScript project converts the human-unreadable trans-compiled JavaScript back to readable TypeScript format. This is useful when debugging is required during production because the source Map will be used. In Typescript, most commonly there are two kinds of .map files, namely Source Map (.js.map) and Declaration Map (.d.ts.map). Source Map (.js.map):  Each section of your generated JavaScript code is linked to the exact line and column of the corresponding Typescript file using JSON-formatted mapping definitions found in source map (.js.map) files.When source maps are enabled, Visual Studio Code and Chrome DevTools will display your Typescript code during debugging rather than the generated complex and intricate JavaScript code. Declaration Map (.d.ts.map).:  Declaration source maps (.d.ts.map) files include mapping definitions that connect each of the type declarations created in.d.ts files back to your original source file (.ts). The mapping definitions in these files are in JSON format.This is helpful in code navigation when you have split a big project into small multiple projects using project references. You can utilize code editor tools like \"Go to Definition\" and \"Rename\" to traverse and edit code across subprojects in a transparent manner. "}},{"@type":"Question","name":"What are the access modifiers in TypeScript?","acceptedAnswer":{"@type":"Answer","text":"When dealing with class members, TypeScript utilizes a variety of access modifiers. The access modifier makes the class members more secure and protects them from unauthorized use. It can also be used to manage a class's data members' visibility.  There are three distinct access modifiers in TypeScript: public: A class that is public can be accessed by all of its members, including its child classes and class instances. private: Private denotes that a class's members can only access one another. protected: When a class is marked as protected, all of its members and the members of its children classes can access it, but the class instance cannot. When there is no access modifier before a class member in the code, TypeScript automatically applies the public access modifier to all members of the class. This might cause problems with compliance processes, thus you should explicitly define the access behavior whenever possible.Furthermore, after your TypeScript code has been compiled, class modifiers have absolutely no impact on your final JavaScript code. Since these modifiers are only present in typescript and not taken into account when the compiler generates the final JS. "}},{"@type":"Question","name":"What are Mapped Types?","acceptedAnswer":{"@type":"Answer","text":"It is common practice to modify an existing type by making each of its properties optional. Given how frequently this occurs in JavaScript, TypeScript offers a feature called mapped types that enables you to define new types based on pre-existing ones. In a similar fashion, the new type converts each property of the old type into a mapped type. For instance, you may make all properties read-only or optional.A mapped type is a generic type that builds types by iterating through keys using a union of PropertyKeys, which are commonly constructed using \"keyof\" keyword.For instance, OptionsFags is “Mapped type,” it is a generic type that takes a type of parameter and iterates over its members to declare the same member's name properties of the boolean type.type OptionsFlags = { \n [Property in keyof Type]: boolean; \n}; \n \ntype FeatureFlags = { \n darkMode: () => void; \n newUserProfile: () => void; \n}; \n  \ntype FeatureOptions = OptionsFlags;  Here, the FeatureOptions type copies and define properties of boolean type for all the corresponding member names of FeatureFlags.   type FeatureOptions = { \n darkMode: boolean; \n newUserProfile: boolean; \n} "}},{"@type":"Question","name":"Explain how TypeScript files can be supported from Node Modules.","acceptedAnswer":{"@type":"Answer","text":"To ensure that TypeScript and JavaScript support performs commendably out of the box, TypeScript includes a number of declaration files (.d.ts files). These declaration files contain information on the various JavaScript APIs as well as the DOM APIs that are common across all browsers. You can adjust the lib setting in the tsconfig.json to specify which declaration files your project needs, albeit there are some reasonable defaults based on your target.Similar to @types/ support, TypeScript includes a feature that lets you override a particular built-in library. When deciding which lib files to include, TypeScript will look for a scoped @typescript/lib-* package in node modules. Next, you may use your package manager to install a specific package to substitute for a specific one."}}]},{"@context":"http://schema.org","@type":"Organization","name":"Knowledgehut Solutions Pvt. Ltd","address":{"@type":"PostalAddress","addressLocality":"Bangalore","addressCountry":"IN","addressRegion":"Karnataka","postalCode":"560103","streetAddress":"Vaishnavi Tech Park, 6th Floor,16/1, Ambalipura - Sarjapur Rd, Bellandur"},"email":"support@knowledgehut.com","telephone":"080 6547 4648","url":"https://www.knowledgehut.com","sameAs":["https://www.facebook.com/KnowledgeHut.Global","https://twitter.com/knowledgehut","https://www.instagram.com/knowledgehut.global/","https://plus.google.com/+Knowledgehutglobal","https://www.youtube.com/user/TheKnowledgehut","https://www.linkedin.com/company/knowledgehut"],"logo":"https://www.knowledgehut.com/assets/images_3_0/kh-upgrad.svg","description":"KnowledgeHut`s leadership in digital training while emphasizing the specific skills and certifications it offers, such as Agile, Project Management, Cyber Security, Data Science, Web Development other key skills showcasing its dedication to empowering professionals and organizations for success.","image":"https://www.knowledgehut.com/infinity_images/kh-desktop-new-logo.svg","contactPoint":[{"@type":"ContactPoint","telephone":"+1-469-442-0620","contactType":"customer service","areaServed":"USA"},{"@type":"ContactPoint","telephone":"1800-121-9232","contactType":"customer service","areaServed":"India"},{"@type":"ContactPoint","telephone":"+44-2080890434","contactType":"customer service","areaServed":"United Kingdom"},{"@type":"ContactPoint","telephone":"+65-317-46174","contactType":"customer service","areaServed":"Singapore"},{"@type":"ContactPoint","telephone":"+601548770914","contactType":"customer service","areaServed":"Malaysia"},{"@type":"ContactPoint","telephone":"+1-613-707-0763","contactType":"customer service","areaServed":"Canada"},{"@type":"ContactPoint","telephone":"+64-36694791","contactType":"customer service","areaServed":"New Zealand"},{"@type":"ContactPoint","telephone":"+353-12708328","contactType":"customer service","areaServed":"Ireland"},{"@type":"ContactPoint","telephone":"+61-290995641","contactType":"customer service","areaServed":"Australia"},{"@type":"ContactPoint","telephone":"8000180860","contactType":"customer service","areaServed":"UAE"}]}]