{"id":434,"date":"2021-12-31T10:33:48","date_gmt":"2021-12-31T08:33:48","guid":{"rendered":"https:\/\/arc.dev\/developer-blog\/?p=434"},"modified":"2025-11-24T13:08:18","modified_gmt":"2025-11-24T05:08:18","slug":"typescript-interview-questions","status":"publish","type":"post","link":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/","title":{"rendered":"20 TypeScript Interview Questions and Answers You Should Prepare For"},"content":{"rendered":"\n<p>Looking to hire a TypeScript developer or hoping to land a job as a TypeScript developer? These <strong>TypeScript interview questions and answers <\/strong>can help you put together a comprehensive interview guide.<\/p>\n\n\n\n<p>TypeScript is closely related to JavaScript. You can refer to our <a href=\"https:\/\/arc.dev\/developer-blog\/javascript-interview-questions\/\">JavaScript interview questions guide<\/a> if you need to review interview questions specifically about JavaScript.<\/p>\n\n\n\n<p>In this guide, we break down the important TypeScript interview questions to know into three groups:`<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#basic-typescript-interview-questions\">Basic TypeScript Interview Questions<\/a><\/li>\n\n\n\n<li><a href=\"#intermediate-typescript-interview-questions\">Intermediate TypeScript Interview Questions<\/a><\/li>\n\n\n\n<li><a href=\"#advanced-typescript-interview-questions\">Advanced TypeScript Interview Questions<\/a><\/li>\n<\/ul>\n\n\n\n<p>You can expect to learn about what questions you should ask, what answers to expect, and what to focus on evaluating for each answer. Additionally, we\u2019ll explain <em>why you should ask these questions, what to look for, and what you want to draw out from your candidates.<\/em><\/p>\n\n\n\n<p>And, at the end of the article (as well as a few places throughout), we\u2019ll link you to some other helpful interview advice and job hunting guides.<\/p>\n\n\n\n<p>Let\u2019s get started!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/arc.dev\/?utm_source=CTA-Banner&amp;utm_medium=Image&amp;utm_campaign=Blog-CRO\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"1024\" height=\"256\" src=\"https:\/\/arc.dev\/developer-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner-1024x256.png\" alt=\"\" class=\"wp-image-2106\" srcset=\"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner-1024x256.png 1024w, https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner-300x75.png 300w, https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner-768x192.png 768w, https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Related Guides<\/strong>:\u00a0<a href=\"https:\/\/arc.dev\/talent-blog\/javascript-interview-questions\/\">JavaScript Interview Questions<\/a>\u00a0\u2022\u00a0<a href=\"https:\/\/arc.dev\/talent-blog\/angular-interview-questions\/\">Angular Interview Questions<\/a>\u00a0\u2022\u00a0<a href=\"https:\/\/arc.dev\/talent-blog\/reactjs-interview-questions\/\">React Interview Questions<\/a>\u00a0\u2022\u00a0<a href=\"https:\/\/arc.dev\/talent-blog\/selenium-interview-questions\/\">Selenium Interview Questions<\/a>\u00a0\u2022\u00a0<a href=\"https:\/\/arc.dev\/talent-blog\/java-interview-questions\/\">Java Interview Questions<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"basic-typescript-interview-questions\">Basic TypeScript Interview Questions<\/h2>\n\n\n\n<p>The following set of questions should test a job candidate&#8217;s basic knowledge of TypeScript and some of its core features.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-1%3A-what-is-typescript-and-how-does-it-differ-from-javascript%3F\">1. What is TypeScript and how does it differ from JavaScript?<\/h3>\n\n\n\n<p><em>This is a fundamental question that interviewers typically ask to gauge the candidate\u2019s familiarity with the language and how comfortable they are with its features. Make sure your candidate can describe TypeScript as a language, its core features, and how it relates to JavaScript.<\/em><\/p>\n\n\n\n<p>TypeScript is a&nbsp;<strong>superset<\/strong>&nbsp;of JavaScript that compiles to plain JavaScript. Conceptually, the relationship between TypeScript and JavaScript is comparable to that of SASS and CSS. In other words, TypeScript is JavaScript&#8217;s ES6 version with some additional features.<\/p>\n\n\n\n<p>TypeScript is an&nbsp;<strong>object-oriented<\/strong>&nbsp;and&nbsp;<strong>statically typed<\/strong>&nbsp;language, similar to Java and C#, whereas JavaScript is a scripting language closer to Python. The object-oriented nature of TypeScript is complete with features such as classes and interfaces, and its static typing allows for better tooling with type inference at your disposal.<\/p>\n\n\n\n<p>From a code perspective, TypeScript is written in a file with a&nbsp;<code>.ts<\/code>&nbsp;extension whereas JavaScript is written with a&nbsp;<code>.js<\/code>&nbsp;extension. Unlike JavaScript, TypeScript code is not understandable by the browsers and can&#8217;t be executed directly in the browser or any other platform. The&nbsp;<code>.ts<\/code>&nbsp;files need to be transpiled using TypeScript&#8217;s&nbsp;<code>tsc<\/code>&nbsp;transpiler to plain JavaScript first, which then gets executed by the target platform.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-2%3A-what-are-the-benefits-of-using-typescript%3F\">2. What are the benefits of using TypeScript?<\/h3>\n\n\n\n<p><em>Each programming language has its pros and cons and the reasons behind its applications. You might ask this question to gain insight into the candidate\u2019s experience using TypeScript and how it has affected the developer experience and the project\u2019s workflow.<\/em><\/p>\n\n\n\n<p><em>Instead of just listing out TypeScript\u2019s benefits, make sure to encourage your candidates\u2019 to talk about how a typical project could benefit from TypeScript. This could range from better maintainability in the long run or <\/em><a href=\"https:\/\/arc.dev\/developer-blog\/how-to-be-productive-at-home-working-remotely\/\"><em>increased developer productivity<\/em><\/a><em> because of the features that TypeScript offers.<\/em><\/p>\n\n\n\n<p>An immediate advantage of using TypeScript is its tooling. TypeScript is a strongly typed language that uses type inferences. These characteristics open the doors to better tooling and tighter integration with code editors. TypeScript&#8217;s strict checks catch your errors early, greatly reducing the chances of typos and other human errors from making their way to production. From an IDE&#8217;s perspective, TypeScript provides the opportunity for your IDE to understand your code better allowing it to display better hints, warnings, and errors to the developer. For example, TypeScript&#8217;s&nbsp;<strong>strict null check<\/strong>&nbsp;throws an error at compile time (and in your IDE) preventing a common JavaScript error of attempting to access a property of an undefined variable at runtime.<\/p>\n\n\n\n<p>A long-run advantage of using TypeScript is its scalability and maintainability. The ability to describe the shape of objects and functions directly in your code makes your codebase easier to understand and more predictable. When used correctly, TypeScript provides a more standardized language resulting in better readability which could save time and effort down the road as the codebase grows.<\/p>\n\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Read More<\/strong>: <a href=\"https:\/\/arc.dev\/developer-blog\/non-technical-common-interview-questions\/\">Common Non-Technical Interview Questions for Software Developer Jobs<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-3%3A-what-are-interfaces-in-typescript%3F\">3. What are interfaces in TypeScript?<\/h3>\n\n\n\n<p><em>Similar to other TypeScript features-related questions, this question tests the candidate\u2019s level of knowledge and familiarity with the language\u2019s feature. An ideal answer should also include its usage and the benefits of using interfaces.<\/em><\/p>\n\n\n\n<p>Interfaces are TypeScript&#8217;s way of defining the syntax of entities. In other words, interfaces are a way to describe data shapes such as objects or an array of objects.<\/p>\n\n\n\n<p>We declare interfaces with the help of the&nbsp;<code>interface<\/code>&nbsp;keyword, followed by the interface name and its definition. Let&#8217;s look at a simple interface for a user object<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>interface<\/strong> User {\n  name: string;\n  age: number;\n}<\/code><\/pre>\n\n\n\n<p>The interface can then be used to set the type of a variable (similar to how you assign primitive types to a variable). A variable with the&nbsp;<code>User<\/code>&nbsp;type will then conform to the interface&#8217;s properties.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>let<\/strong> user: User = {\n  name: \"Bob\",\n  age: 20, <em>\/\/ omitting the `age` property or a assigning a different type instead of a number would throw an error<\/em>\n};\n<\/code><\/pre>\n\n\n\n<p>Interfaces help drive consistency in your TypeScript project. Furthermore, interfaces also improve your project&#8217;s tooling, providing better autocomplete functionality in your IDEs and ensuring the correct values are being passed into constructors and functions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-4%3A-how-do-you-create-a-new-type-using-a-subset-of-an-interface%3F\">4. How do you create a new type using a subset of an interface?<\/h3>\n\n\n\n<p><em>Being able to modify an interface is useful to remove duplicate code and max_Being able to modify an interface is useful to remove duplicate code and maximize the reusability of existing interfaces (where it makes sense). This question covers one of the many features that TypeScript offers to create a new interface from an existing interface.<\/em><\/p>\n\n\n\n<p>TypeScript has a utility type called&nbsp;<code>omit<\/code>&nbsp;that lets you construct a new type by passing a current type\/interface and selecting the keys to be excluded from the new type. The example below shows how you create a new type&nbsp;<code>UserPreview<\/code>&nbsp;based on the&nbsp;<code>User<\/code>&nbsp;interface, but without the&nbsp;<code>email<\/code>&nbsp;property.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>interface<\/strong> User {\n  name: string;\n  description: string;\n  age: number;\n  email: string;\n}\n\n<em>\/\/ removes the `email` property from the User interface<\/em>\n<strong>type<\/strong> UserPreview = Omit&lt;User, \"email\"&gt;;\n\n<strong>const<\/strong> userPreview: UserPreview = {\n  name: \"Bob\",\n  description: \"Awesome guy\",\n  age: 20,\n};\n<\/code><\/pre>\n\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Read More<\/strong>: <a href=\"https:\/\/arc.dev\/developer-blog\/questions-to-ask-at-an-interview\/\">31 Questions to Ask at an Interview for Software Development Jobs<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-5%3A-how-do-enums-work-in-typescript%3F\">5. How do &#8220;enums&#8221; work in TypeScript?<\/h3>\n\n\n\n<p><em>Enums are a common data structure in most typed languages. Understanding enums and how to use them is essential in organizing code and making code more readable. The candidate should be able to explain enums at a high level, along with their basic features and usage.<\/em><\/p>\n\n\n\n<p>Enums or enumerated types are a means of defining a set of named constants. These data structures have a constant length and contain a set of constant values. Enums in TypeScript are commonly used to represent a set number of options for a given value using a set of key\/value pairs.<\/p>\n\n\n\n<p>Let&#8217;s look at an example of an enum to define a set of user types.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>enum<\/strong> UserType {\n  Guest = \"G\",\n  Verified = \"V\",\n  Admin = \"A\",\n}\n\n<strong>const<\/strong> userType: UserType = UserType.Verified;\n<\/code><\/pre>\n\n\n\n<p>Under the hood, TypeScript translates enums into plain JavaScript objects after compilation. This makes the use of enums more favorable compared to using multiple independent&nbsp;<code>const<\/code>&nbsp;variables. The grouping that enums offer makes your code type-safe and more readable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-6%3A-what-are-arrow-functions-in-typescript%3F\">6. What are arrow functions in TypeScript?<\/h3>\n\n\n\n<p><em>Arrow function is a popular feature of ES6 and TypeScript that introduces an alternate shorter way of defining functions. Although shorter, arrow functions come with their pros and cons, which are important to consider when choosing which method to use.<\/em><\/p>\n\n\n\n<p>Arrow functions, also known as lambda functions, provide a short and convenient syntax to declare functions. Arrow functions are often used to create callback functions in TypeScript. Array operations such as&nbsp;<code>map<\/code>,&nbsp;<code>filter<\/code>, and&nbsp;<code>reduce<\/code>&nbsp;all accept arrow functions as their arguments.<\/p>\n\n\n\n<p>However, arrow functions&#8217; anonymity also has its downsides. If not careful, the shorter arrow function syntax can be more difficult to understand. Furthermore, arrow functions&#8217; nameless nature also makes it impossible to create self-referencing functions (i.e. recursions).<\/p>\n\n\n\n<p>Let&#8217;s take a look at a regular function that accepts two numbers and returns its sum.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>function<\/strong> <strong>addNumbers<\/strong>(x: number, y: number): <strong>number<\/strong> {\n  <strong>return<\/strong> x + y;\n}\n\naddNumbers(1, 2); <em>\/\/ returns 3<\/em>\n<\/code><\/pre>\n\n\n\n<p>Now let&#8217;s convert the function above into an arrow function.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>const<\/strong> addNumbers = (x: number, y: number): number =&gt; {\n  <strong>return<\/strong> x + y;\n};\n\naddNumbers(1, 2); <em>\/\/ returns 3<\/em>\n<\/code><\/pre>\n\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Read More<\/strong>: <a href=\"https:\/\/arc.dev\/developer-blog\/time-management-skills\/\">Time Management Skills for Developers: Best Tips, Tools, and Strategies<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-7%3A-what-are-the-differences-between-var%2C-let%2C-and-const%3F\">7. What are the differences between <code>var<\/code>, <code>let<\/code>, and <code>const<\/code>?<\/h3>\n\n\n\n<p><em>TypeScript provides three ways to declare a variable, each with its recommended use cases. The ability to differentiate between the three keywords and understanding which to use when plays an important role in writing quality code. As the candidate, make sure that you explain the use case for each of the keywords along with their behavior.<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>var<\/strong>: Declares a function-scoped or global variable with similar behavior and scoping rules to JavaScript&#8217;s&nbsp;<code>var<\/code>&nbsp;variables.&nbsp;<code>var<\/code>&nbsp;variables don&#8217;t require setting its value during its declaration.<\/li>\n\n\n\n<li><strong>let<\/strong>: Declares a block-scoped local variable.&nbsp;<code>let<\/code>&nbsp;variables don&#8217;t require setting a value of a variable during its declaration. Block-scoped local variable means that the variable can only be accessed within its containing block, such as a function, an if\/else block, or a loop. Furthermore, unlike&nbsp;<code>var<\/code>,&nbsp;<code>let<\/code>&nbsp;variables cannot be read or written to before they are declared.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><em>\/\/ reading\/writing before a `let` variable is declared<\/em>\nconsole.log(\"age\", age); <em>\/\/ Compiler Error: error TS2448: Block-scoped variable 'age' used before its declaration<\/em>\nage = 20; <em>\/\/ Compiler Error: error TS2448: Block-scoped variable 'age' used before its declaration<\/em>\n\n<strong>let<\/strong> age: number;\n\n<em>\/\/ accessing `let` variable outside it's scope<\/em>\n<strong>function<\/strong> <strong>user<\/strong>(): <strong>void<\/strong> {\n  <strong>let<\/strong> name: string;\n  <strong>if<\/strong> (true) {\n    <strong>let<\/strong> email: string;\n    console.log(name); <em>\/\/ OK<\/em>\n    console.log(email); <em>\/\/ OK<\/em>\n  }\n  console.log(name); <em>\/\/ OK<\/em>\n  console.log(email); <em>\/\/ Compiler Error: Cannot find name 'email'<\/em>\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>const<\/strong>: Declares a block-scoped constant value that cannot be changed after it\u2019s initialized.&nbsp;<code>const<\/code>&nbsp;variables require an initialization as part of its declaration. This is ideal for variables that don&#8217;t change throughout their lifetime.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><em>\/\/ reassigning a `const` variable<\/em>\n<strong>const<\/strong> age: number = 20;\nage = 30; <em>\/\/ Compiler Error: Cannot assign to 'age' because it is a constant or read-only property<\/em>\n\n<em>\/\/ declaring a `const` variable without initialization<\/em>\n<strong>const<\/strong> name: string; <em>\/\/ Compiler Error: const declaration must be initialized<\/em>\n<\/code><\/pre>\n\n\n\n<p><em><strong>Sidenote<\/strong>: Linters does a great job in catching these in your IDEs and compilers will throw an error if a rule is violated as a result of misusing these keywords.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-8%3A-when-do-you-use-a-return-type-of-never-and-how-does-it-differ-from-void%3F\">8. When do you use a return type of <code>never<\/code> and how does it differ from <code>void<\/code>?<\/h3>\n\n\n\n<p><em>This is a question that showcases the candidate&#8217;s understanding of TypeScript&#8217;s types and their use cases in the context of defining return types. The candidate should be able to distinguish between the two types and identify the return type of a function by looking at its contents.<\/em><\/p>\n\n\n\n<p>Before diving into the differences between&nbsp;<code>never<\/code>&nbsp;and&nbsp;<code>void<\/code>, let&#8217;s talk about the behavior of a JavaScript function when nothing is returned explicitly.<\/p>\n\n\n\n<p>Let&#8217;s take the function in the example below. It doesn&#8217;t explicitly return anything to the caller. However, if you assign it to a variable and log the value of the variable, you will see that the function&#8217;s value is&nbsp;<code>undefined<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>printName(name: string): void {\n  console.log(name);\n}\n\n<strong>const<\/strong> printer = printName('Will');\nconsole.log(printer); <em>\/\/ logs \"undefined\"<\/em>\n<\/code><\/pre>\n\n\n\n<p>The above snippet is an example of&nbsp;<code>void<\/code>&nbsp;functions. Functions with no explicit returns are inferred by TypeScript to have a return type of&nbsp;<code>void<\/code>.<\/p>\n\n\n\n<p>In contrast,&nbsp;<code>never<\/code>&nbsp;is a type that represents a value that never occurs. For example, a function with an infinite loop or a function that throws an error are functions that have a&nbsp;<code>never<\/code>&nbsp;return type.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>const<\/strong> error = (): never =&gt; {\n  <strong>throw<\/strong> <strong>new<\/strong> Error(\"\");\n};\n<\/code><\/pre>\n\n\n\n<p>In summary,&nbsp;<code>void<\/code>&nbsp;is used whenever a function&nbsp;<strong>doesn&#8217;t<\/strong>&nbsp;return anything explicitly whereas&nbsp;<code>never<\/code>&nbsp;is used whenever a function&nbsp;<strong>never<\/strong>&nbsp;returns.<\/p>\n\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Read More<\/strong>: <a href=\"https:\/\/arc.dev\/developer-blog\/problem-solving-skills\/\">Problem-Solving Skills for Software Developers: Why &amp; How to Improve<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-9%3A-what-access-modifiers-are-supported-by-typescript%3F\">9. What access modifiers are supported by TypeScript?<\/h3>\n\n\n\n<p><em>Access modifiers and encapsulation go hand-in-hand. A question like this is an opportunity to understand the candidate&#8217;s knowledge of the concept of encapsulation and TypeScript&#8217;s approach to data access restrictions. <em>You may also be looking for real-world applications of access modifiers, the reasoning behind them, and their advantages.<\/em><\/em><\/p>\n\n\n\n<p>The concept of &#8220;<strong>encapsulation<\/strong>&#8221; is used in object-oriented programming to control the visibility of its properties and methods. TypeScript uses access modifiers to set the visibility of a class&#8217;s contents. Because TypeScript gets compiled to JavaScript, logic related to access modifiers is applied during compile time, not at run time.<\/p>\n\n\n\n<p>There are three types of access modifiers in TypeScript:&nbsp;<code>public<\/code>,&nbsp;<code>private<\/code>, and&nbsp;<code>protected<\/code>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>public<\/strong>: All properties and methods are public by default. Public members of a class are visible and accessible from any location.<\/li>\n\n\n\n<li><strong>protected<\/strong>: Protected properties are accessible from within the same class and its subclass. For example, a variable or method with the&nbsp;<code>protected<\/code>&nbsp;keyword will be accessible from anywhere within its class and within a different class that extends the class containing the variable or method.<\/li>\n\n\n\n<li><strong>private<\/strong>: Private properties are only accessible from within the class the property or method is defined.<\/li>\n<\/ul>\n\n\n\n<p>To use any of these access modifiers, add the&nbsp;<code>public<\/code>,&nbsp;<code>protected<\/code>, or&nbsp;<code>public<\/code>&nbsp;(if omitted, TypeScript will default to public) in front of the property or method.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>class<\/strong> User {\n  <strong>private<\/strong> username; <em>\/\/ only accessible inside the `User` class<\/em>\n\n  <em>\/\/ only accessible inside the `User` class and its subclass<\/em>\n  <strong>protected<\/strong> updateUser(): void {}\n\n  <em>\/\/ accessible from any location<\/em>\n  <strong>public<\/strong> getUser() {}\n}\n<\/code><\/pre>\n\n\n\n<p>Violating the rules of the access modifier, such as attempting to access a class&#8217;s private property from a different class will result in the following error during the compilation process.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Property '&lt;property-name&gt;' is private and only accessible within class '&lt;class-name&gt;'.\n<\/code><\/pre>\n\n\n\n<p>In conclusion, access modifiers play an important role in arranging your code. They allow you to expose a set of public APIs and hide the implementation details. You can think of access modifiers as a form of entry gates to your class. Effective use of access modifiers reduces the chance of errors from misusing another class&#8217;s contents significantly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-10%3A-what-are-generics-and-how-to-use-them-in-typescript%3F\">10. What are generics and how to use them in TypeScript?<\/h3>\n\n\n\n<p><em><em>In addition to the \u201cwhat\u201d, an interviewer asking this question might also be looking for answers on how generics tie into the code\u2019s flexibility and the reasoning behind using generics over other types. Your candidate should be comfortable discussing what generics are, how it works, and it\u2019s benefits.<\/em><\/em><\/p>\n\n\n\n<p>Good software engineering practice often encourages reusability and flexibility. The use of&nbsp;<strong>generics<\/strong>&nbsp;provides reusability and flexibility by allowing a component to work over a variety of types rather than a single one while preserving its precision (unlike the use of&nbsp;<code>any<\/code>).<\/p>\n\n\n\n<p>Below is an example of a generic function that lets the caller define the type to be used within the function.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>function<\/strong> <strong>updateUser<\/strong>&lt;<strong>Type<\/strong>&gt;(arg: Type): <strong>Type<\/strong> {\n  <strong>return<\/strong> arg;\n}\n<\/code><\/pre>\n\n\n\n<p>To call a generic function, you can either pass in the type explicitly within angle brackets or via&nbsp;<em>type argument inference<\/em>, letting TypeScript infer the type based on the type of the argument passed in.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>\/\/ explicitly specifying the type<\/em>\n<strong>let<\/strong> user = updateUser&lt;string&gt;(\"Bob\");\n\n<em>\/\/ type argument inference<\/em>\n<strong>let<\/strong> user = updateUser(\"Bob\");\n<\/code><\/pre>\n\n\n\n<p>Generics allows us to keep track of the type information throughout the function. This makes the code flexible and reusable without compromising on its type accuracy.<\/p>\n\n\n\n<p><em>Looking to hire the best remote developers? Arc can help you:<\/em><\/p>\n\n\n\n<p><em>\u26a1\ufe0f Get instant candidate matches without searching<br>\u26a1\ufe0f Identify top applicants from our network of 350,000+ <br>\u26a1\ufe0f Hire 4x faster with vetted candidates (qualified and interview-ready)<\/em><\/p>\n\n\n\n<p><a href=\"https:\/\/arc.dev\/\"><em><strong>Try Arc to hire top developers now \u2192<\/strong><\/em><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"intermediate-typescript-interview-questions\">Intermediate TypeScript Interview Questions<\/h2>\n\n\n\n<p>The following set of questions should test the candidate&#8217;s intermediate knowledge of TypeScript and some of its widely used features.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-1%3A-when-should-you-use-the-unknown-type%3F\">1. When should you use the <code>unknown<\/code> type?<\/h3>\n\n\n\n<p><em>Knowing the differences between&nbsp;<code>unknown<\/code>&nbsp;and&nbsp;<code>any<\/code>&nbsp;and when to use which is important working with TypeScript.&nbsp;<code>unknown<\/code>&nbsp;is usually the preferred option because of its safer typing. <em>Your candidate should be able to explain what the <code>unknown<\/code> type is used for and how to use it.<\/em><\/em><\/p>\n\n\n\n<p><code>unknown<\/code>&nbsp;is a special type that is similar to&nbsp;<code>any<\/code>. Like&nbsp;<code>any<\/code>, a common use case of the&nbsp;<code>unknown<\/code>&nbsp;type is when you don&#8217;t know the exact type upfront.&nbsp;<code>unknown<\/code>&nbsp;variables accept any value. However, when trying to operate on an&nbsp;<code>unknown<\/code>&nbsp;variable, TypeScript requires a type check or a type assertion. This difference makes&nbsp;<code>unknown<\/code>&nbsp;a<\/p>\n\n\n\n<p>Let&#8217;s look at two examples to highlight the differences between&nbsp;<code>any<\/code>&nbsp;and&nbsp;<code>unknown<\/code>&nbsp;types.<\/p>\n\n\n\n<p>The snippet below shows a valid TypeScript code where you could pass in any value as the&nbsp;<code>callback<\/code>&nbsp;parameter, and the&nbsp;<code>invokeCallback<\/code>&nbsp;method will try to call it. This function doesn&#8217;t throw any compile-time error, however, it could lead to a run time error when you pass in a variable that&#8217;s not callable as the&nbsp;<code>callback<\/code>&nbsp;parameter.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>invokeCallback(callback: any): void {\n  callback();\n}\n<\/code><\/pre>\n\n\n\n<p>The&nbsp;<code>unknown<\/code>&nbsp;equivalent of the above example requires you to add a type check before calling the&nbsp;<code>callback<\/code>&nbsp;function. The additional type check prevents the run time error above from happening.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>invokeCallback(callback: unknown): void {\n  <strong>if<\/strong> (<strong>typeof<\/strong> callback === 'function') {\n    callback();\n  }\n}\n<\/code><\/pre>\n\n\n\n<p>To summarize, you can assign anything to both an&nbsp;<code>any<\/code>&nbsp;and an&nbsp;<code>unknown<\/code>&nbsp;type. However,&nbsp;<code>unknown<\/code>&nbsp;types require a type check or type assertion to perform any operation on the variable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-2%3A-what-is-noimplicitany-and-what-is-its-purpose%3F\">2. What is <code>noImplicitAny<\/code> and what is its purpose?<\/h3>\n\n\n\n<p><em>This is a TypeScript configuration question that would give you insight into the level of familiarity the candidate has when configuring a TypeScript project. Although this is only one property from TypeScript&#8217;s list of configurable properties,&nbsp;<code>noImplicitAny<\/code>&nbsp;plays an important role in larger projects.<\/em><\/p>\n\n\n\n<p><code>noImplicitAny<\/code>&nbsp;is a property in a TypeScript project&#8217;s configuration file (<code>tsconfig.json<\/code>) that modifies how TypeScript&#8217;s compiler handles your project&#8217;s implicit&nbsp;<code>any<\/code>&nbsp;types. The&nbsp;<code>noImplicitAny<\/code>&nbsp;flag can be set to either true or false and can always be changed later. There is no correct answer as to what this value should be as each project is different. To be able to decide on what the flag should be set to, it is important to understand the differences between when it&#8217;s turned on and when it&#8217;s off.<\/p>\n\n\n\n<p>When the&nbsp;<code>noImplicitAny<\/code>&nbsp;flag is false (by default), the compiler doesn&#8217;t infer the variable type based on how it&#8217;s used. Instead, the compiler defaults the type to any.<\/p>\n\n\n\n<p>On the other hand, when the&nbsp;<code>noImplicitAny<\/code>&nbsp;flag is true, the compiler will attempt to infer the type, throwing a compile-time error if the compiler isn&#8217;t able to infer the type.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Setting the&nbsp;<code>noImplicitAny<\/code>&nbsp;flag to either true or false doesn&#8217;t prevent you from setting a variable&#8217;s type to&nbsp;<code>any<\/code>.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Read More<\/strong>: <a href=\"https:\/\/arc.dev\/developer-blog\/leadership-skills\/\">10 Ways to Improve Leadership Skills (&amp; Advance Your Developer Career)<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-3%3A-what-are-conditional-types-in-typescript%3F\">3. What are conditional types in TypeScript?<\/h3>\n\n\n\n<p><em>Sometimes, a variable&#8217;s type is dependent on its input. Conditional types help bridge the input and output&#8217;s type &#8211; transforming a variable&#8217;s type based on a set condition. Conditional type is an important TypeScript feature that helps write type-safe framework-like code such as API boundaries. Although the candidate might not use this feature directly every day, they might be using them indirectly when using code from other frameworks or libraries.<\/em><\/p>\n\n\n\n<p>Conditional types in TypeScript are similar to ternary operators. As the name suggests, it assigns a type to the variable based on a condition.<\/p>\n\n\n\n<p>The general expression for defining a conditional type in TypeScript is as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A <strong>extends<\/strong> B ? X : Y\n<\/code><\/pre>\n\n\n\n<p>Type&nbsp;<code>X<\/code>&nbsp;in the snippet above is applied if the variable fulfills the condition whereas type&nbsp;<code>Y<\/code>&nbsp;is applied if the variable doesn&#8217;t. In the example above, type&nbsp;<code>X<\/code>&nbsp;is assigned if&nbsp;<code>A<\/code>&nbsp;extends&nbsp;<code>B<\/code>, while type&nbsp;<code>Y<\/code>&nbsp;is assigned if&nbsp;<code>A<\/code>&nbsp;doesn&#8217;t extend&nbsp;<code>B<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-4%3A-what-is-the-difference-between-union-and-intersection-types%3F\">4. What is the difference between union and intersection types?<\/h3>\n\n\n\n<p><em>Union and intersection types are considered advanced types in TypeScript. Understanding this is important when creating types in developer&#8217;s TypeScript projects to reduce duplication of types. The candidate should ideally be able to explain what union and intersection types are, their differences, and their use cases.<\/em><\/p>\n\n\n\n<p>Unions and intersection types let you compose and combine existing types instead of creating them from scratch. Both union and intersection come with their unique characteristics which make them ideal for different use cases.<\/p>\n\n\n\n<p>A&nbsp;<strong>union<\/strong>&nbsp;type is described as a type that can be one of several types. Union type uses the&nbsp;<code>|<\/code>&nbsp;(vertical bar) symbol to separate the list of types that will be used in the new type. Let&#8217;s take a look at an example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>interface<\/strong> B {\n  name: string,\n  email: string\n}\n\n<strong>interface<\/strong> C {\n  name: string,\n  age: number\n}\n\n<strong>type<\/strong> A = B | C;\n<\/code><\/pre>\n\n\n\n<p><code>A<\/code>&nbsp;in the snippet above can either be of type&nbsp;<code>B<\/code>&nbsp;or&nbsp;<code>C<\/code>. Based on&nbsp;<code>B<\/code>&nbsp;and&nbsp;<code>C<\/code>s interfaces,&nbsp;<code>A<\/code>&nbsp;can either contain&nbsp;<code>name<\/code>&nbsp;and&nbsp;<code>email<\/code>&nbsp;(<code>B<\/code>) or&nbsp;<code>name<\/code>&nbsp;and&nbsp;<code>age<\/code>&nbsp;(<code>C<\/code>), but not&nbsp;<code>email<\/code>&nbsp;and&nbsp;<code>age<\/code>.<\/p>\n\n\n\n<p>When accessing type&nbsp;<code>A<\/code>, TypeScript only lets you access properties that exist in both&nbsp;<code>B<\/code>&nbsp;and&nbsp;<code>C<\/code>&nbsp;(<code>name<\/code>) as those are the only ones that TypeScript can be certain of their existence.<\/p>\n\n\n\n<p><strong>Intersection<\/strong>&nbsp;on the other hand, is described as a type that combines multiple types into one &#8211; combining all the properties of each type to create a new type. Intersection uses the&nbsp;<code>&amp;<\/code>&nbsp;symbol to separate the list of types that will be combined. Let&#8217;s look at an example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>interface<\/strong> B {\n  name: string,\n  email: string\n}\n\n<strong>interface<\/strong> C {\n  name: string,\n  age: number\n}\n\n<strong>type<\/strong> A = B &amp; C;\n<\/code><\/pre>\n\n\n\n<p><code>A<\/code>&nbsp;in the snippet above will contain all the properties from both&nbsp;<code>B<\/code>&nbsp;and&nbsp;<code>C<\/code>&nbsp;(<code>name<\/code>,&nbsp;<code>email<\/code>, and&nbsp;<code>age<\/code>).<\/p>\n\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Read More<\/strong>: <a href=\"https:\/\/arc.dev\/developer-blog\/interpersonal-skills\/\">Interpersonal Skills: What Developers Need to Know (&amp; How to Improve)<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-5%3A-what-is-the-difference-between-extends-and-implements-in-typescript%3F\">5. What is the difference between <code>extends<\/code> and <code>implements<\/code> in TypeScript?<\/h3>\n\n\n\n<p><em>Inheritance is an important concept in object-oriented programming, specifically for polymorphism and code reusability. There are two main keywords that TypeScript uses for inheritance &#8211;&nbsp;<code>extends<\/code>&nbsp;and&nbsp;<code>implements<\/code>. This question is a chance to test your candidate&#8217;s knowledge of the concept of inheritance and how to do that in TypeScript.<\/em><\/p>\n\n\n\n<p>Implements and extends have different uses. Let&#8217;s go through each individual and take a look at an example to compare the two.<\/p>\n\n\n\n<p>When a class&nbsp;<strong>extends<\/strong>&nbsp;another class, the child class will inherit all the properties and methods of the class it extends. You can override any of the existing properties and methods of its parent and add new ones.<\/p>\n\n\n\n<p>When a class&nbsp;<strong>implements<\/strong>&nbsp;another class or interface, the class has to implement all the methods and properties from the implemented class or interface. The&nbsp;<code>implements<\/code>&nbsp;keyword acts as a contract that the class has to follow, and TypeScript will make sure that the class is of the same shape as the class or interface it implements.<\/p>\n\n\n\n<p>Let&#8217;s look at an example of a class and how another class can extend and implement it.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>class<\/strong> User {\n  name: string;\n  age: number;\n}\n\n<em>\/\/ John will contain name and age from the User class<\/em>\n<strong>class<\/strong> John <strong>extends<\/strong> User {}\n\n<em>\/\/ this will result in an error as Bob doesn't have all the properties that<\/em>\n<em>\/\/ the User class has<\/em>\n<strong>class<\/strong> Bob <strong>implements<\/strong> User {}\n\n<em>\/\/ This is valid as Mike satisfies the \"contract\" specified by the <\/em>\n<em>\/\/ User class<\/em>\n<strong>class<\/strong> Mike <strong>implements<\/strong> User {\n  name = 'Mike';\n  age = 25\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/arc.dev\/?utm_source=CTA-Banner&amp;utm_medium=Image&amp;utm_campaign=Blog-CRO\"><img decoding=\"async\" width=\"1200\" height=\"300\" data-id=\"2106\" src=\"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner.png\" alt=\"\" class=\"wp-image-2106\" srcset=\"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner.png 1200w, https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner-300x75.png 300w, https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner-1024x256.png 1024w, https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2022\/02\/Meet-HireAI-blog-CTA-banner-768x192.png 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"advanced-typescript-interview-questions\">Advanced TypeScript Interview Questions<\/h2>\n\n\n\n<p>The following set of advanced questions for Typescript interviews should test your candidates\u2019 deep knowledge of TS and some of its more expert-level concepts and features.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-1%3A-explain-how-optional-chaining-works-in-typescript.\">1. Explain how optional chaining works in TypeScript.<\/h3>\n\n\n\n<p><em>Optional chaining is a TypeScript feature that allows safer and easier accessing of values inside deep objects. Understanding how and when to use this feature will help developers write more concise code (where it makes sense). A candidate should be able to explain what optional chaining is and also elaborate on its use cases and pros and cons.<\/em><\/p>\n\n\n\n<p>Optional chaining allows you to access properties and methods located deep within an object without having to check the validity of each reference in the chain.<\/p>\n\n\n\n<p>Optional chaining uses the question mark followed by a period (<code>?.<\/code>) as its operator. TypeScript evaluates each reference in the chain and performs a null or undefined check before accessing its children. TypeScript immediately stops the execution when it fails the null or undefined check and returns&nbsp;<code>undefined<\/code>&nbsp;for the entire chain.<\/p>\n\n\n\n<p>The code snippet below is an example of accessing a property with and without using optional chaining.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>const<\/strong> user = {\n  personalInfo: {\n    name: 'John'\n  }\n}\n\n<em>\/\/ without optional chaining<\/em>\n<strong>const<\/strong> name = user &amp;&amp; user.personalInfo &amp;&amp; user.personalInfo.name || undefined;\n\n<em>\/\/ with optional chaining<\/em>\n<strong>const<\/strong> name = user?.personalInfo?.name;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-2%3A-what-are-abstract-classes%3F\">2. What are abstract classes?<\/h3>\n\n\n\n<p><em><em>Abstract class is another feature of TypeScript that ties into the inheritance concept in object-oriented programming (OOP). You may ask this question to get an insight into the candidate\u2019s understanding of OOP and its more advanced features in TypeScript.<\/em><\/em><\/p>\n\n\n\n<p>Abstract classes specify a contract for the objects without the ability to instantiate them directly. However, an abstract class may also provide implementation details for its members.<\/p>\n\n\n\n<p>An abstract class contains one or more abstract members. Any classes that extend the abstract class will then have to provide an implementation for the superclass&#8217;s abstract members.<\/p>\n\n\n\n<p>Let&#8217;s look at an example of how an abstract class is written in TypeScript and how another class can extend it. In the example below, both&nbsp;<code>Car<\/code>&nbsp;and&nbsp;<code>Bike<\/code>&nbsp;extend the&nbsp;<code>Vehicle<\/code>&nbsp;class, however, they each have a different implementation of the&nbsp;<code>drive()<\/code>&nbsp;method.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>abstract<\/strong> <strong>class<\/strong> Vehicle {\n\n  <strong>abstract<\/strong> drive(): void;\n  \n  startEngine(): void {\n    console.log('Engine starting...');\n  }\n}\n\n<strong>class<\/strong> Car <strong>extends<\/strong> Vehicle {\n  drive(): void {\n    console.log('Driving in a car');\n  }\n}\n\n<strong>class<\/strong> Bike <strong>extends<\/strong> Vehicle {\n  drive(): void {\n    console.log('Driving on a bike');\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Read More<\/strong>: <a href=\"https:\/\/arc.dev\/developer-blog\/benefits-of-working-from-home\/\">8 Great Benefits of Working From Home (A Guide for Remote Developers)<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-3%3A-what-are-type-assertions-in-typescript%3F\">3. What are type assertions in TypeScript?<\/h3>\n\n\n\n<p><em><em>Type assertions are a way to tell TypeScript the type of a variable. As types are widely used in TypeScript applications, you often run into scenarios where you want to specify a more specific type to a variable. A candidate should be able to explain not only what type assertions are, but also their syntax and the reasons behind why you might use them.<\/em><\/em><\/p>\n\n\n\n<p>Type assertion allows you to explicitly set the type of a value and tell the compiler not to infer it. This is useful when you know the type of an object more specifically than its current type or current inferred type. In such cases, you can use type assertions to tell TypeScript the current type of the variable.<\/p>\n\n\n\n<p>TypeScript provides two syntaxes for type assertions &#8211;&nbsp;<code>as<\/code>&nbsp;and&nbsp;<code>&lt;&gt;<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>\/\/ using the `as` keyword<\/em>\n<strong>const<\/strong> name: string = person.name <strong>as<\/strong> string;\n\n<em>\/\/ using `&lt;&gt;`<\/em>\n<strong>const<\/strong> name: string = &lt;string&gt;person.name;\n<\/code><\/pre>\n\n\n\n<p>Since type assertions are only a way to tell the TypeScript compiler about the type of a variable, there is no runtime penalty of doing this in your TypeScript projects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-4%3A-what-is-the-difference-between-type-inference-and-contextual-typing%3F\">4. What is the difference between type inference and contextual typing?<\/h3>\n\n\n\n<p><em><em>Type inference is a key feature in TypeScript that helps write type-safe code that is both less error-prone and easier to read. You might ask this question to gauge your candidate\u2019s understanding of both TypeScript\u2019s type inference and their overall familiarity with TypeScript\u2019s type system.<\/em><\/em><\/p>\n\n\n\n<p>TypeScript can infer the type of a variable usually based on the variable&#8217;s initialization or declaration. This process is known as&nbsp;<strong>type inference<\/strong>.<\/p>\n\n\n\n<p>The snippet below is an example of type inference where TypeScript infers the type of&nbsp;<code>name<\/code>&nbsp;as &#8220;string&#8221; based on the value assigned to it.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>let<\/strong> name = 'john'\n<\/code><\/pre>\n\n\n\n<p><strong>Contextual typing<\/strong>&nbsp;is a subset of type inference where TypeScript uses the location or context of a variable to infer its type. You can think about this as type inference in the opposite direction.<\/p>\n\n\n\n<p>In the snippet below, TpyeScript uses information from the&nbsp;<code>onmousedown<\/code>&nbsp;function to infer the type of the&nbsp;<code>mouseEvent<\/code>&nbsp;parameter.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>window.onmousedown = <strong>function<\/strong>(mouseEvent) {\n   console.log(mouseEvent.button);   <em>\/\/ OK<\/em>\n   console.log(mouseEvent.person);   <em>\/\/ Error<\/em>\n};\n<\/code><\/pre>\n\n\n\n<p class=\"has-johannes-bg-alt-1-background-color has-background\"><strong>Read More<\/strong>: <a href=\"https:\/\/arc.dev\/developer-blog\/remote-developer-salary-negotiation\/\">How to Negotiate Your Salary as a Remote Developer<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"question-5%3A-how-does-function-overloads-work-in-typescript%3F\">5. How does function overloads work in TypeScript?<\/h3>\n\n\n\n<p><em>Function overloading helps make functions more flexible and reusable by allowing the same function to behave a different way based on the set of input passed in. In addition to the&nbsp;<code>how<\/code>, <em>you might be looking for answers on how function overloads tie into the code reusability aspect and any other benefits it provides.<\/em><\/em><\/p>\n\n\n\n<p>Function overload is when the same function name is used multiple times with a different set of arguments &#8211; the number of arguments, types, or return types.<\/p>\n\n\n\n<p>Let&#8217;s look at an example of how a&nbsp;<code>print<\/code>&nbsp;function can accept multiple types as its parameter by using function overloading.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(message: string): void;\nprint(message: string&#91;]): void;\n\nprint(message: unknown): void {\n  <strong>if<\/strong> (<strong>typeof<\/strong> message === 'string') {\n    console.log(message);\n  } <strong>else<\/strong> <strong>if<\/strong> (Array.isArray(message)) {\n    message.forEach((individualMessage) =&gt; {\n      console.log(individualMessage);\n    });\n  } <strong>else<\/strong> {\n    <strong>throw<\/strong> <strong>new<\/strong> Error('unable to print');\n  }\n}\n<\/code><\/pre>\n\n\n\n<p>Based on the code snippet above, we can now call&nbsp;<code>print<\/code>&nbsp;passing in either a single message string or an array of message strings.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print('Single message');\n<em>\/\/ Console Output:<\/em>\n<em>\/\/ Single message<\/em>\n\nprint(&#91;'First message', 'Second message']);\n<em>\/\/ Console Output<\/em>\n<em>\/\/ First message<\/em>\n<em>\/\/ Second message<\/em>\n<\/code><\/pre>\n\n\n\n<p>Apart from the reusability of the function, function overloading also comes with autocomplete support. When calling a function (depending on your IDE), you will be provided with a list of all possible overloads that you can choose from for your specific use case, creating a better development experience.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p>Whether you\u2019re a hiring manager looking for the ideal candidate or a developer preparing for an interview, we hope these TypeScript interview questions help you through the process.<\/p>\n\n\n\n<p>Keep in mind that technical skills and knowledge are only one part of the hiring process. Past experiences and soft skills are equally important to make sure you hire the best candidate (or land the right job).<\/p>\n\n\n\n<p>Good luck on your upcoming TypeScript interview! Here are a few other helpful guides to read:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/arc.dev\/developer-blog\/remote-developer-interview-mistakes\/\">8 Common Interview Mistakes Remote Software Developers Make<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/arc.dev\/developer-blog\/behavioral-interview-questions-tech\/\">8 Behavioral Interview Questions Asked by Top Tech Companies<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/arc.dev\/developer-blog\/remote-developer-interview-tips\/\">10+ Tips for Preparing for a Remote Software Developer Zoom Interview<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/arc.dev\/developer-blog\/social-media-thought-leadership\/\">How To Use Social Media Thought Leadership To Level Up Your Developer Career<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/arc.dev\/developer-blog\/phone-screen-interview\/\">Phone Screen Interview vs Actual Phone Interview: Learn the Differences<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/arc.dev\/developer-blog\/thank-you-email-after-interview\/\">How to Write a Great Thank-You Email After an Interview<\/a><\/li>\n<\/ul>\n\n\n\n<p><em>You can also explore <a href=\"https:\/\/arc.dev\/\">HireAI<\/a> to skip the line and:<\/em><\/p>\n\n\n\n<p><em>\u26a1\ufe0f Get instant candidate matches without searching<br>\u26a1\ufe0f Identify top applicants from our network of 350,000+ with no manual screening<br>\u26a1\ufe0f Hire 4x faster with vetted candidates (qualified and interview-ready)<\/em><\/p>\n\n\n\n<p><a href=\"https:\/\/arc.dev\"><strong><em><strong><em><\/em><\/strong><\/em><\/strong><\/a><strong><em><strong><em><a href=\"https:\/\/arc.dev\">Try HireAI and hire top developers now \u2192<\/a><\/em><\/strong><\/em><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Use this list of TypeScript interview questions and answers to prepare for your upcoming meeting with a technical recruiter or lead engineer!<\/p>\n","protected":false},"author":11,"featured_media":448,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-434","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-interview-preparation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>20 TypeScript Interview Questions and Answers You Should Prepare For<\/title>\n<meta name=\"description\" content=\"Use this list of TypeScript interview questions and answers to prepare for your upcoming meeting with a technical recruiter or lead engineer!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"20 TypeScript Interview Questions and Answers You Should Prepare For\" \/>\n<meta property=\"og:description\" content=\"Use this list of TypeScript interview questions and answers to prepare for your upcoming meeting with a technical recruiter or lead engineer!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/\" \/>\n<meta property=\"og:site_name\" content=\"Arc Talent Career Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/arcdotdev\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-31T08:33:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-24T05:08:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2021\/12\/typescript-interview-questions.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1128\" \/>\n\t<meta property=\"og:image:height\" content=\"625\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"William Juan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@williamjuan27\" \/>\n<meta name=\"twitter:site\" content=\"@arcdotdev\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Juan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/\"},\"author\":{\"name\":\"William Juan\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#\\\/schema\\\/person\\\/721b68c77c9069298e5a25153e7fed62\"},\"headline\":\"20 TypeScript Interview Questions and Answers You Should Prepare For\",\"datePublished\":\"2021-12-31T08:33:48+00:00\",\"dateModified\":\"2025-11-24T05:08:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/\"},\"wordCount\":4493,\"publisher\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/typescript-interview-questions.jpg\",\"articleSection\":[\"Interview Preparation\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/\",\"url\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/\",\"name\":\"20 TypeScript Interview Questions and Answers You Should Prepare For\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/typescript-interview-questions.jpg\",\"datePublished\":\"2021-12-31T08:33:48+00:00\",\"dateModified\":\"2025-11-24T05:08:18+00:00\",\"description\":\"Use this list of TypeScript interview questions and answers to prepare for your upcoming meeting with a technical recruiter or lead engineer!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/#primaryimage\",\"url\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/typescript-interview-questions.jpg\",\"contentUrl\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/typescript-interview-questions.jpg\",\"width\":1128,\"height\":625,\"caption\":\"typescript interview questions and answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/typescript-interview-questions\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"20 TypeScript Interview Questions and Answers You Should Prepare For\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#website\",\"url\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/\",\"name\":\"Arc Talent Career Blog\",\"description\":\"Tech insights and career advice for developers worldwide\",\"publisher\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#organization\",\"name\":\"Arc.dev\",\"url\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/arc.dev\\\/developer-blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Arc-alternate-logo.png\",\"contentUrl\":\"https:\\\/\\\/arc.dev\\\/developer-blog\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Arc-alternate-logo.png\",\"width\":512,\"height\":512,\"caption\":\"Arc.dev\"},\"image\":{\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/arcdotdev\",\"https:\\\/\\\/x.com\\\/arcdotdev\",\"https:\\\/\\\/www.instagram.com\\\/arcdotdev\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/arcdotdev\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/Arcdotdev\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/#\\\/schema\\\/person\\\/721b68c77c9069298e5a25153e7fed62\",\"name\":\"William Juan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7e1c4dc3be52db56dbc9ff8157f502e7f6126ce1219f08f16e2df7008a56d295?s=96&d=mm&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7e1c4dc3be52db56dbc9ff8157f502e7f6126ce1219f08f16e2df7008a56d295?s=96&d=mm&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7e1c4dc3be52db56dbc9ff8157f502e7f6126ce1219f08f16e2df7008a56d295?s=96&d=mm&r=pg\",\"caption\":\"William Juan\"},\"description\":\"Web &amp; Mobile Front-End Developer William is a front-end developer working primarily in the web and hybrid mobile spaces. The majority of his work has revolved around the Angular ecosystem, including working with other Angular-related frameworks such as NativeScript and Ionic. At Arc, he contributes the expertise he's gained over years as a writer on software development careers.\",\"sameAs\":[\"https:\\\/\\\/williamjuan.dev\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/williamjuants\\\/\",\"https:\\\/\\\/x.com\\\/williamjuan27\"],\"url\":\"https:\\\/\\\/arc.dev\\\/talent-blog\\\/author\\\/wjuan\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"20 TypeScript Interview Questions and Answers You Should Prepare For","description":"Use this list of TypeScript interview questions and answers to prepare for your upcoming meeting with a technical recruiter or lead engineer!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/","og_locale":"en_US","og_type":"article","og_title":"20 TypeScript Interview Questions and Answers You Should Prepare For","og_description":"Use this list of TypeScript interview questions and answers to prepare for your upcoming meeting with a technical recruiter or lead engineer!","og_url":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/","og_site_name":"Arc Talent Career Blog","article_publisher":"https:\/\/www.facebook.com\/arcdotdev","article_published_time":"2021-12-31T08:33:48+00:00","article_modified_time":"2025-11-24T05:08:18+00:00","og_image":[{"width":1128,"height":625,"url":"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2021\/12\/typescript-interview-questions.jpg","type":"image\/jpeg"}],"author":"William Juan","twitter_card":"summary_large_image","twitter_creator":"@williamjuan27","twitter_site":"@arcdotdev","twitter_misc":{"Written by":"William Juan","Est. reading time":"24 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/#article","isPartOf":{"@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/"},"author":{"name":"William Juan","@id":"https:\/\/arc.dev\/talent-blog\/#\/schema\/person\/721b68c77c9069298e5a25153e7fed62"},"headline":"20 TypeScript Interview Questions and Answers You Should Prepare For","datePublished":"2021-12-31T08:33:48+00:00","dateModified":"2025-11-24T05:08:18+00:00","mainEntityOfPage":{"@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/"},"wordCount":4493,"publisher":{"@id":"https:\/\/arc.dev\/talent-blog\/#organization"},"image":{"@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/#primaryimage"},"thumbnailUrl":"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2021\/12\/typescript-interview-questions.jpg","articleSection":["Interview Preparation"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/","url":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/","name":"20 TypeScript Interview Questions and Answers You Should Prepare For","isPartOf":{"@id":"https:\/\/arc.dev\/talent-blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/#primaryimage"},"image":{"@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/#primaryimage"},"thumbnailUrl":"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2021\/12\/typescript-interview-questions.jpg","datePublished":"2021-12-31T08:33:48+00:00","dateModified":"2025-11-24T05:08:18+00:00","description":"Use this list of TypeScript interview questions and answers to prepare for your upcoming meeting with a technical recruiter or lead engineer!","breadcrumb":{"@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/#primaryimage","url":"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2021\/12\/typescript-interview-questions.jpg","contentUrl":"https:\/\/arc.dev\/talent-blog\/wp-content\/uploads\/2021\/12\/typescript-interview-questions.jpg","width":1128,"height":625,"caption":"typescript interview questions and answers"},{"@type":"BreadcrumbList","@id":"https:\/\/arc.dev\/talent-blog\/typescript-interview-questions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/arc.dev\/talent-blog\/"},{"@type":"ListItem","position":2,"name":"20 TypeScript Interview Questions and Answers You Should Prepare For"}]},{"@type":"WebSite","@id":"https:\/\/arc.dev\/talent-blog\/#website","url":"https:\/\/arc.dev\/talent-blog\/","name":"Arc Talent Career Blog","description":"Tech insights and career advice for developers worldwide","publisher":{"@id":"https:\/\/arc.dev\/talent-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/arc.dev\/talent-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/arc.dev\/talent-blog\/#organization","name":"Arc.dev","url":"https:\/\/arc.dev\/talent-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/arc.dev\/talent-blog\/#\/schema\/logo\/image\/","url":"https:\/\/arc.dev\/developer-blog\/wp-content\/uploads\/2021\/11\/Arc-alternate-logo.png","contentUrl":"https:\/\/arc.dev\/developer-blog\/wp-content\/uploads\/2021\/11\/Arc-alternate-logo.png","width":512,"height":512,"caption":"Arc.dev"},"image":{"@id":"https:\/\/arc.dev\/talent-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/arcdotdev","https:\/\/x.com\/arcdotdev","https:\/\/www.instagram.com\/arcdotdev\/","https:\/\/www.linkedin.com\/company\/arcdotdev","https:\/\/www.youtube.com\/c\/Arcdotdev"]},{"@type":"Person","@id":"https:\/\/arc.dev\/talent-blog\/#\/schema\/person\/721b68c77c9069298e5a25153e7fed62","name":"William Juan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7e1c4dc3be52db56dbc9ff8157f502e7f6126ce1219f08f16e2df7008a56d295?s=96&d=mm&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/7e1c4dc3be52db56dbc9ff8157f502e7f6126ce1219f08f16e2df7008a56d295?s=96&d=mm&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7e1c4dc3be52db56dbc9ff8157f502e7f6126ce1219f08f16e2df7008a56d295?s=96&d=mm&r=pg","caption":"William Juan"},"description":"Web &amp; Mobile Front-End Developer William is a front-end developer working primarily in the web and hybrid mobile spaces. The majority of his work has revolved around the Angular ecosystem, including working with other Angular-related frameworks such as NativeScript and Ionic. At Arc, he contributes the expertise he's gained over years as a writer on software development careers.","sameAs":["https:\/\/williamjuan.dev\/","https:\/\/www.linkedin.com\/in\/williamjuants\/","https:\/\/x.com\/williamjuan27"],"url":"https:\/\/arc.dev\/talent-blog\/author\/wjuan\/"}]}},"_links":{"self":[{"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/posts\/434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/comments?post=434"}],"version-history":[{"count":0,"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/posts\/434\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/media\/448"}],"wp:attachment":[{"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/media?parent=434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/categories?post=434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arc.dev\/talent-blog\/wp-json\/wp\/v2\/tags?post=434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}