
Hands-On TypeScript for C# and .NET Core Developers
Transition from C# to TypeScript 3.1 and build applications with ASP.NET Core 2
- 460 pages
- English
- ePUB (mobile friendly)
- Available on iOS & Android
Hands-On TypeScript for C# and .NET Core Developers
Transition from C# to TypeScript 3.1 and build applications with ASP.NET Core 2
About this book
Discover how TypeScript allows you to build modern client-rich applications, thanks to its object-oriented capabilities and third-party tools like Angular and Web APIs
Key Features
- Make a seamless transition to using TypeScript 3.1 in your development stack
- Work with TypeScript 3.1 in your ASP.NET Core projects to build rich applications that are easy to maintain
- Build, test, and integrate your own TypeScript library in real-world projects
Book Description
Writing clean, object-oriented code in JavaScript gets trickier and complex as the size of the project grows. This is where Typescript comes into the picture; it lets you write pure object-oriented code with ease, giving it the upper hand over JavaScript. This book introduces you to basic TypeScript concepts by gradually modifying standard JavaScript code, which makes learning TypeScript easy for C# ASP.NET developers.
As you progress through the chapters, you'll cover object programming concepts, such as classes, interfaces, and generics, and understand how they are related to, and similar in, both ES6 and C#. You will also learn how to use bundlers like WebPack to package your code and other resources. The book explains all concepts using practical examples of ASP.NET Core projects, and reusable TypeScript libraries. Finally, you'll explore the features that TypeScript inherits from either ES6 or C#, or both of them, such as Symbols, Iterables, Promises, and Decorators.
By the end of the book, you'll be able to apply all TypeScript concepts to understand the Angular framework better, and you'll have become comfortable with the way in which modules, components, and services are defined and used in Angular. You'll also have gained a good understanding of all the features included in the Angular/ASP.NET Core Visual Studio project template.
What you will learn
- Organize, test, and package large TypeScript code base
- Add TypeScript to projects using TypeScript declaration files
- Perform DOM manipulation with TypeScript
- Develop Angular projects with the Visual Studio Angular project template
- Define and use inheritance, abstract classes, and methods
- Leverage TypeScript-type compatibility rules
- Use WebPack to bundle JavaScript and other resources such as CSS to improve performance
- Build custom directives and attributes, and learn about animations
Who this book is for
If you're a C# or.NET developer looking for an easy accessible way of learning TypeScript, this book is for you.
Frequently asked questions
- Essential is ideal for learners and professionals who enjoy exploring a wide range of subjects. Access the Essential Library with 800,000+ trusted titles and best-sellers across business, personal growth, and the humanities. Includes unlimited reading time and Standard Read Aloud voice.
- Complete: Perfect for advanced learners and researchers needing full, unrestricted access. Unlock 1.4M+ books across hundreds of subjects, including academic and specialized titles. The Complete Plan also includes advanced features like Premium Read Aloud and Research Assistant.
Please note we cannot support devices running on iOS 13 and Android 7 or earlier. Learn more about using the app.
Information
Navigation and Services
- Defining services and using them with Dependency Injection
- Using Angular HTTP Client to define services
- Defining SPA pages with routing and lazy loading
- Using Angular testing frameworks
Technical requirements
- Visual Studio 2017, with the latest ASP.NET Core tools
- Visual Studio TypeScript SDK
- A version of Angular CLI installed globally (Version 6 or above)
Services and Dependency Injection
- Service settings usually depend on the overall application state, which is unknown to each single component. Therefore, in general, components should be able to create services with the correct settings, so forcing them to do it would break application modularity, and would yield spaghetti code.
Services that depend on the context are more common than they might appear, since possible contexts also include component testing. During unit testing, it is very difficult to arrange fake servers and other application parts that behave as required by each test. Therefore, when testing components, fake services are used that provide the data needed by the tests without actually interacting with a server and/or other application parts. - Service creations may be expensive operations, so it is convenient that several components share the same service instance. Moreover, instance sharing becomes a necessity when service instances contain state information that must be shared among components.
Implementing shared instances with static properties directly handled by the components breaks application modularity, creates problems during testing, and is likely to yield hard-to-find bugs during software maintenance because access to the static properties containing the shared services are spread throughout the code: they are hidden inputs/outputs that are difficult to track, and difficult to prepare, during testing.
- How to create each service in a way that can be dependent on the overall application state?
- If the service is a singleton, or if a new instance is created each time the service is requested. When a service is not found in a container, it is searched up in the container hierarchy until it reaches the root. Thus, the structure of the hierarchy defines which requests share the same singletons, and which requests share the same service creation strategy.
Angular injectors' hierarchy
export function getBaseUrl() {
return document.getElementsByTagName('base')[0].href;
}
const providers = [
{ provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }
];
platformBrowserDynamic(providers).bootstrapModule(AppModule)
.catch(err => console.log(err)); @NgModule({
...
providers: [
{...},
{...}
...
],
...
})
...
@Component({
...
providers: [
...
],
...
}) Table of contents
- Title Page
- Copyright and Credits
- Dedication
- Packt Upsell
- Contributors
- Preface
- Introduction to TypeScript
- Complex Types and Functions
- DOM Manipulation
- Using Classes and Interfaces
- Generics
- Namespaces and Modules
- Bundling with WebPack
- Building TypeScript Libraries
- Decorators and Advanced ES6 Features
- Angular ASP.NET Core Project Template
- Input and Interactions
- Angular Advanced Features
- Navigation and Services
- Assessments
- Other Books You May Enjoy