TypeScriptIntermediate2 - 3 tháng

Typescript

Lộ trình phát triển toàn diện Typescript theo tiêu chuẩn quốc tế nilbuild/developer-roadmap

Hướng dẫn từng bước từ nền tảng đến chuyên sâu giúp bạn làm chủ Typescript. Tích hợp tài liệu lý thuyết, bài viết thực chiến, video tham khảo và bài tập lập trình trực tiếp trên IDE.

Giai đoạn:5 Phases
Mô-đun:93 Kỹ năng
Thực hành:29 Bài Lab IDE
Tiêu chuẩn:nilbuild/roadmap
⚡ Trình biên dịch IDE trực tuyến: Làm chủ kỹ năng thông qua thực hành viết mã và kiểm thử tự động.
Mở IDE Thực Hành Lộ Trình Này →
Bộ lọc:
Thành thạo:0% (0/0)
01
Giai đoạn 1Xây dựng tư duy kiến trúc và công cụ nền tảng

Nền Tảng & Khái Niệm Cốt Lõi

Giai đoạn 1 tập trung hoàn thiện 19 chủ đề then chốt.

Cốt lõiKiến thức

Abstract Classes

An abstract class is a class that cannot be instantiated directly. Its primary purpose is to define a blueprint for other classes. It can contain abstract methods (methods without implementation) and concrete methods (methods with implementation). Subclasses must provide concrete implementations for all abstract methods inherited from the abstract class, unless the subclass is also declared abstract. This ensures that subclasses adhere to a specific interface or contract.

AbstractClassesEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Access Modifiers

Access modifiers in object-oriented programming control the visibility of class members (properties and methods). They determine which parts of your code, or even external code, can access and modify those members. Common access modifiers include `public`, `private`, and `protected`, each offering different levels of accessibility and encapsulation.

AccessModifiersEngineering
2 khái niệmChi tiết
Cốt lõiIDE Lab

Advanced Types

Advanced types are sophisticated features in TypeScript that allow developers to create flexible and reusable code by composing existing types in complex ways. These tools include features like union types, intersection types, mapped types, and conditional types, which enable the creation of highly expressive type definitions. By leveraging these patterns, you can define precise constraints for your data structures and ensure type safety even in scenarios where the structure of an object is dynamic or dependent on other values.

AdvancedTypesEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

Ambient Modules

Ambient modules in TypeScript are used to describe the shape of existing JavaScript code when you don't have the TypeScript declaration files (`.d.ts`) readily available. They essentially allow you to tell the TypeScript compiler about the existence and structure of a JavaScript module, so you can import and use it in your TypeScript code without getting type errors, even if the module itself wasn't written in TypeScript.

AmbientModulesEngineering
1 khái niệmChi tiết
Cốt lõiIDE Lab

any

`any` is a type in TypeScript that acts as a top type by opting out of type checking for a variable. When a value is assigned the `any` type, you can perform any operation on it, such as accessing arbitrary properties or calling it as a function, without the compiler raising errors. This type is primarily used as an escape hatch when you need to bypass the type system for dynamic content or when migrating existing JavaScript codebases to TypeScript.

anyCoreEngineering
1 khái niệmChi tiết
Khuyên họcIDE Lab

Array

An array is a data structure that stores an ordered collection of elements, where each element is accessed using its numerical index. Arrays are fundamental for managing lists of items, and in TypeScript, you define the types of elements that an array can hold, enforcing consistency and preventing errors. An array's length is mutable allowing you to dynamically add or remove elements.

ArrayCoreEngineering
1 khái niệmChi tiết
Cốt lõiIDE Lab

as any

The `as any` syntax in TypeScript is a type assertion that instructs the compiler to treat a value as the `any` type, effectively disabling all type checking for that specific expression. When this assertion is used, you bypass the type system, allowing you to access any properties or methods on the object regardless of its original definition. This feature is often used as a temporary escape hatch when dealing with legacy code, external libraries with incomplete type definitions, or complex dynamic data structures where precise typing is difficult to determine.

asanyEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

as const

`as const` is a TypeScript feature that allows you to tell the compiler to infer the narrowest or most specific type possible for an expression. Instead of the compiler widening the type of a value to its general type (like inferring a string variable as `string`), `as const` makes the compiler infer the value as a constant type (like inferring a string variable as the specific string literal type `"hello"`). This is useful for creating immutable data structures or when you need the compiler to enforce the exact values allowed.

asconstEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Type Assertions with as

Type assertions in TypeScript are a way to tell the compiler the specific type of a variable. They allow you to override TypeScript's type inference when you know more about the type of a value than the compiler does. Using `as [type]` is one syntax for type assertions, allowing you to explicitly cast a variable to a more specific type. This doesn't perform any runtime type checking or conversion, it simply instructs the compiler to treat the variable as if it were of the specified type.

TypeAssertionsEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

Awaited

Awaited is a utility type that models the process of unwrapping a Promise. It is used to determine the type that a Promise resolves to, regardless of how many layers of nested Promises are involved. By applying this utility, you can extract the underlying value from an asynchronous function's return type or any other Promise-like structure.

AwaitedCoreEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Boolean Type in TypeScript

A boolean type represents a logical value that can be either `true` or `false`. It is commonly used in programming to control the flow of execution based on certain conditions, allowing programs to make decisions and execute different code blocks depending on whether a condition is met. Boolean values are fundamental for expressing logical operations and comparisons.

BooleanTypeEngineering
2 khái niệmChi tiết
Khuyên họcIDE Lab

Build Tools

Task runners automatically execute commands and carry out processes behind the scenes. This helps automate your workflow by performing mundane, repetitive tasks that you would otherwise waste an egregious amount of time repeating. Common usages of task runners include numerous development tasks such as: spinning up development servers, compiling code (ex. SCSS to CSS), running linters, serving files up from a local port on your computer, and many more!

BuildToolsEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

Class

A class is a blueprint for creating objects (instances) that share similar characteristics. It defines the properties (data) and methods (functions) that the objects will possess. Classes allow you to create reusable code structures by defining a template that you can then use to instantiate multiple objects with the same basic features.

ClassCoreEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

Classes

Classes are blueprints for creating objects, encapsulating data (properties) and behavior (methods) into a single unit. They provide a structured way to define the characteristics and actions that an object of that class can possess. This allows for creating multiple instances of the same object type with consistent properties and methods.

ClassesCoreEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Combining Types

Combining types in TypeScript allows you to create new, more complex types from existing ones. This is achieved through features like unions and intersections. A union type lets a variable hold values of different types, while an intersection type combines multiple types into a single type that has all the properties of each individual type. These mechanisms provide flexibility and expressiveness when defining the shape of your data.

CombiningTypesEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

Compiler Options

Compiler options in TypeScript provide fine-grained control over how the TypeScript compiler (`tsc`) transforms `.ts` files into JavaScript. These options are typically configured within a `tsconfig.json` file or passed directly via the command line. They dictate aspects like target ECMAScript version, module system, strictness of type checking, source map generation, and many other behaviors of the compilation process.

CompilerOptionsEngineering
3 khái niệmChi tiết
Cốt lõiIDE Lab

Conditional Types

Conditional types in TypeScript allow you to define types that depend on other types, similar to a ternary operator in JavaScript. They enable you to express type relationships that change based on whether a specific type condition is met. This feature makes your type definitions more flexible and capable of handling complex scenarios where the resulting type depends on the structure or nature of another type.

ConditionalTypesEngineering
1 khái niệmChi tiết
Khuyên họcKiến thức

Constructor Overloading

Constructor overloading allows a class to have multiple constructors with different parameter lists. This enables you to create objects of the class in different ways, providing flexibility in initialization based on the provided arguments. Each constructor variation handles the object's initialization differently depending on the types and number of arguments passed during instantiation.

ConstructorOverloadingEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Constructor Parameters

In TypeScript classes, constructor parameters provide a concise way to define and initialize class properties directly within the constructor's parameter list. By using access modifiers like `public`, `private`, or `protected` before a constructor parameter, TypeScript automatically creates a corresponding class property with that name and assigns the constructor argument's value to it. This streamlines the process of property declaration and initialization, reducing boilerplate code.

ConstructorParametersEngineering
1 khái niệmChi tiết
02
Giai đoạn 2Làm chủ các thư viện, framework và luồng xử lý chính

Kỹ Năng Trọng Tâm & Thực Hành

Giai đoạn 2 tập trung hoàn thiện 19 chủ đề then chốt.

Cốt lõiKiến thức

Decorators

Decorators are a special kind of declaration that can be attached to a class declaration, method, accessor, property, or parameter. They use the form `@expression`, where `expression` must evaluate to a function that will be called at runtime with information about the decorated declaration. Decorators provide a way to add both annotations and a meta-programming syntax for class declarations and members. They essentially modify the behavior or functionality of the decorated code in a declarative way.

DecoratorsCoreEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

TypeScript Ecosystem

The TypeScript ecosystem refers to the collection of tools, libraries, frameworks, and resources that support and enhance TypeScript development. It includes everything from build tools and linters to UI libraries and server-side frameworks that have TypeScript definitions available or are specifically designed to work well with TypeScript. The ecosystem also incorporates community resources like documentation, tutorials, and open-source projects that help developers learn and use TypeScript effectively.

TypeScriptEcosystemEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Enum

An "enum" (short for enumeration) is a way to define a set of named constants. It provides a way to give more friendly names to sets of numeric values, making code more readable and maintainable. Enums allow you to define a type by enumerating its possible values, which can represent options, states, or any other set of distinct possibilities.

EnumCoreEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

Equality in Type Guards and Narrowing

Equality in the context of type guards and narrowing refers to using comparison operators (like `===`, `!==`, `==`, `!=`) to refine the type of a variable within a TypeScript program. By comparing a variable against a specific value (or another variable), TypeScript can infer a more specific type for that variable within a certain scope, enabling safer and more accurate code execution by ruling out possibilities. This mechanism enhances type safety by allowing the compiler to understand the possible values and types a variable can hold at different points in the code.

EqualityinEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Exclude

`Exclude` is a utility type in TypeScript that constructs a new type by removing types from a union type. Given two types, `Type` and `ExcludedUnion`, `Exclude<Type, ExcludedUnion>` creates a type that includes all members of `Type` that are _not_ assignable to `ExcludedUnion`. This is useful for filtering out specific types from a union, resulting in a more refined and specific type.

ExcludeCoreEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

Extending Interfaces

Extending interfaces in TypeScript allows you to create new interfaces based on existing ones. This means a new interface can inherit all the properties and methods of a parent interface and add its own unique members, promoting code reuse and establishing a clear hierarchy of types. Think of it like inheritance in classes, but for interface definitions.

ExtendingInterfacesEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

External Modules in TypeScript

External modules in TypeScript are files containing code that can be imported and used in other files. They help organize and structure your project by dividing code into logical units, improving maintainability and reusability. Each external module has its own scope, preventing naming conflicts and allowing you to explicitly control what is exposed from the module using `export` and what is consumed from other modules using `import`.

ExternalModulesEngineering
1 khái niệmChi tiết
Khuyên họcKiến thức

Extract

Extract allows you to create a new type by picking out specific types from a union based on a condition. Essentially, it filters a union type, keeping only those members that are assignable to a specified type. This is useful when you need to narrow down the possible types in a union to only those that meet a certain criteria.

ExtractCoreEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Formatting

Formatting tools automatically adjust the way your code looks, making it consistent and easier to read. These tools can handle things like spacing, indentation, and line breaks. This makes your code cleaner and helps everyone on a team follow the same style. A popular tool for formatting code is Prettier. It supports TypeScript and can be configured to enforce a specific style guide.

FormattingCoreEngineering
3 khái niệmChi tiết
Khuyên họcKiến thức

Function Overloading

Function overloading allows you to define multiple function signatures with the same name but different parameter types or numbers of parameters. This lets you provide specific type information based on how the function is called, enhancing type safety and code clarity. When you call an overloaded function, TypeScript picks the most appropriate function signature based on the provided arguments.

FunctionOverloadingEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Generic Constraints

Generic constraints in TypeScript allow you to limit the types that can be used as type arguments for a generic type or function. They ensure that the type argument satisfies a specific requirement, like having certain properties or methods. This provides more type safety and enables you to work with specific properties of the generic type, knowing they are guaranteed to exist.

GenericConstraintsEngineering
1 khái niệmChi tiết
Khuyên họcKiến thức

Generic Types

Generic types allow you to write code that can work with a variety of types without sacrificing type safety. Think of them as placeholders for types that you specify later when you use the code. To create a generic type, you use angle brackets `<>` to define type parameters. These parameters act as variables that represent the specific type you want to work with, allowing you to write reusable components that adapt to different data types.

GenericTypesEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Generics

Generics are a way to write code that can work with a variety of types without knowing those types ahead of time. They allow you to define type variables that can be used to represent the specific type that will be used when the code is actually executed. This makes your code more reusable and type-safe by preventing errors that could occur if you were to use `any` or other less specific types.

GenericsCoreEngineering
1 khái niệmChi tiết
Khuyên họcIDE Lab

Global Augmentation

Global augmentation in TypeScript lets you add or modify existing global types and interfaces. This is particularly useful when working with JavaScript libraries that don't have TypeScript definitions or when you want to extend existing TypeScript definitions to suit your specific project needs. It essentially allows you to declare properties or methods on globally available objects (like `window` or built-in JavaScript objects) from within your TypeScript code.

GlobalAugmentationEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Hybrid Types

Hybrid types describe objects that act as both an object and a function. In essence, they possess properties and methods like a regular object, but they can also be invoked or called directly like a function. This unusual structure is often used when a function needs to maintain state or have additional properties associated with it.

HybridTypesEngineering
1 khái niệmChi tiết
Khuyên họcKiến thức

Inheritance vs. Polymorphism

Inheritance is a mechanism where a class (the subclass or derived class) acquires the properties and methods of another class (the superclass or base class), establishing an "is-a" relationship. Polymorphism, meaning "many forms," allows objects of different classes to be treated as objects of a common type, enabling you to write code that can work with objects of multiple classes without knowing their specific types at compile time.

Inheritancevs.Engineering
3 khái niệmChi tiết
Cốt lõiIDE Lab

Installation and Configuration

The installation process of TypeScript generally includes installing the TypeScript compiler, which translates TypeScript code into JavaScript, and configuring your project with a `tsconfig.json` file to manage compiler options and project settings. This setup enables you to write, compile, and run TypeScript code effectively.

InstallationandEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

instanceof Operator

The `instanceof` operator checks if an object is an instance of a specific class or constructor function. It determines if the prototype property of a constructor appears anywhere in the prototype chain of an object. The result of this check is a boolean value, indicating whether the object is considered an instance of the specified type.

instanceofOperatorEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

InstanceType

InstanceType is a built-in utility type that constructs a type consisting of the instance type of a constructor function. It extracts the type returned by a class constructor when it is instantiated with the `new` keyword. This is useful for capturing the specific shape of an object that is created from a class, allowing developers to ensure that variables or function parameters match the structure of that class instance.

InstanceTypeCoreEngineering
1 khái niệmChi tiết
03
Giai đoạn 3Kỹ thuật chuyên sâu, hiệu năng và chuẩn thiết kế

Kiến Trúc Nâng Cao & Tối Ưu

Giai đoạn 3 tập trung hoàn thiện 19 chủ đề then chốt.

Cốt lõiIDE Lab

Interface Declaration

An interface declaration introduces a new named type into the TypeScript type system. It specifies a contract that an object (or other type) can adhere to, defining the names and types of properties and methods that implementing objects must possess. Interfaces do not produce JavaScript code; they exist purely for type-checking purposes, enabling stronger static typing and improved code maintainability.

InterfaceDeclarationEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Interface

An interface in TypeScript is a way to define a contract for the shape of an object. It names a set of properties and their types that an object must have. Think of it as a blueprint that specifies the properties (and optionally, methods) that an object should possess, allowing you to ensure that different parts of your code work together smoothly by enforcing a consistent structure.

InterfaceCoreEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

Intersection Types

Intersection types in TypeScript allow you to combine multiple types into a single type. The resulting type has all the features (properties, methods, etc.) of all the constituent types. This is particularly useful when you want to create a type that represents an object that must satisfy multiple type constraints simultaneously.

IntersectionTypesEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

Introduction to TypeScript

TypeScript is a programming language that builds on JavaScript by adding static types. It essentially acts as a superset of JavaScript, meaning that all valid JavaScript code is also valid TypeScript code. The key addition of static typing allows developers to define the expected data types of variables, function parameters, and return values, which helps catch errors during development and improves code maintainability.

IntroductiontoEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

keyof Operator

The `keyof` operator in TypeScript creates a union of all the keys (property names) of a given object type. It essentially extracts the names of the properties as string literal types. This allows you to work with the properties of an object type in a type-safe way, especially when dealing with generic functions or situations where you need to ensure that you're only accessing valid properties.

keyofOperatorEngineering
2 khái niệmChi tiết
Khuyên họcIDE Lab

Linting

Linting is the process of running a program that analyzes code for potential errors, stylistic issues, and code quality problems. It helps developers identify and fix issues early in the development cycle, leading to more maintainable and consistent codebases. ESLint is a popular linting tool for JavaScript and TypeScript that can be configured with rules to enforce specific coding standards and best practices.

LintingCoreEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Literal Types

Literal types are a feature that allows you to specify the exact value a variable can hold. Instead of just saying a variable is a `string` or a `number`, you can specify that it can only be a particular string like `"hello"` or a particular number like `42`. This enables more precise type checking and helps catch errors at compile time by ensuring that variables only hold the intended values.

LiteralTypesEngineering
1 khái niệmChi tiết
Khuyên họcKiến thức

Mapped Types

Mapped types in TypeScript allow you to create new types based on existing ones by transforming each property. They iterate over the keys of an existing type and apply a transformation to each key and/or value, effectively mapping the original type to a new type structure. This provides a concise and powerful way to generate types that are variations of other types, promoting code reuse and reducing redundancy.

MappedTypesEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Method Overriding

Method overriding allows a subclass to provide a specific implementation for a method that is already defined in its superclass. When a method in a subclass has the same name, same parameters, and same return type (or a more specific return type, known as covariant return type) as a method in its superclass, the subclass's method overrides the superclass's method. This means that when the method is called on an object of the subclass, the subclass's version of the method will be executed instead of the superclass's version.

MethodOverridingEngineering
3 khái niệmChi tiết
Khuyên họcKiến thức

Namespace Augmentation

Namespace augmentation in TypeScript allows you to add new properties or methods to an existing namespace, even if that namespace is defined in a separate file or module. This feature is particularly useful for extending namespaces declared in external libraries or modules without directly modifying the original source code. It provides a way to customize or add functionality to existing namespaces in a modular and organized manner.

NamespaceAugmentationEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Namespaces

Namespaces in TypeScript are a way to organize code into logical groups, preventing naming collisions and improving code maintainability. They create a named container where you can define variables, functions, classes, and interfaces. By using namespaces, you can encapsulate related functionality under a specific name, making your code more structured and easier to understand.

NamespacesCoreEngineering
1 khái niệmChi tiết
Khuyên họcKiến thức

Never Type

The `never` type in TypeScript represents the type of values that will never occur. This means a function that always throws an error or runs forever (infinite loop) implicitly returns `never`. It is also useful for exhaustive checking in discriminated unions, ensuring that all possible cases are handled. Essentially, you cannot assign any type to a variable of type `never` (except `never` itself), making it the bottom type in TypeScript's type system.

NeverTypeEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Non-null Assertion

The non-null assertion operator in TypeScript is a way to tell the compiler that you are certain a value is not null or undefined, even if the TypeScript's type checker thinks it could be. It is denoted by an exclamation mark (`!`) placed after a variable or expression. Using this operator effectively tells the compiler to suppress strict null checks for that particular expression, trusting that you, the developer, have enough context to know the value will be present at runtime.

Non-nullAssertionEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

NonNullable Utility Type

`NonNullable` is a utility type that removes `null` and `undefined` from a type. If you have a type that could potentially be `null` or `undefined`, applying `NonNullable` ensures that the resulting type will only consist of the original type's other possible values, effectively guaranteeing that `null` and `undefined` are excluded.

NonNullableUtilityEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Null Type in TypeScript

The `null` type represents the intentional absence of a value. It's a primitive data type that has only one possible value: `null`. It signifies that a variable or property has no value assigned to it, or that a value has been explicitly removed.

NullTypeEngineering
3 khái niệmChi tiết
Khuyên họcKiến thức

Number Type in TypeScript

The `number` type in TypeScript represents numeric values. This includes integers (whole numbers like 1, 42, -10) and floating-point numbers (numbers with decimal points like 3.14, -0.5). TypeScript uses double-precision 64-bit floating point format (IEEE 754) to represent all numbers.

NumberTypeEngineering
3 khái niệmChi tiết
Cốt lõiIDE Lab

Object Types in TypeScript

In TypeScript, an object type defines the structure of a JavaScript object. It specifies the names, types, and optionality of the properties an object should have. You can define object types using curly braces `{}` and listing the properties with their corresponding types, separated by semicolons or commas. This allows TypeScript to enforce that objects conform to a specific shape, enhancing code safety and providing better autocompletion during development.

ObjectTypesEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

Omit

`Omit` is a utility type in TypeScript that constructs a new type by picking all properties from an existing type and then removing the specified properties (keys). Essentially, it creates a subset of the original type by excluding certain keys you define. The resulting type will only contain the properties that were not omitted.

OmitCoreEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

Parameters Utility Type

The `Parameters` utility type in TypeScript extracts the parameter types of a function type into a tuple. This allows you to programmatically determine the expected arguments of a function and use them in other type definitions, providing type safety and flexibility when working with function signatures. The result is a tuple type where each element represents the type of a parameter in the function.

ParametersUtilityEngineering
2 khái niệmChi tiết
04
Giai đoạn 4Kiểm thử, CI/CD, đám mây và quy chuẩn sản xuất

Hệ Sinh Thái & Triển Khai Thực Tế

Giai đoạn 4 tập trung hoàn thiện 19 chủ đề then chốt.

Cốt lõiKiến thức

Partial Type

The `Partial<Type>` utility type in TypeScript constructs a type where all properties of the original `Type` are set to optional. This means that when you use `Partial<Type>`, you can create objects that only include a subset of the properties defined in the original `Type`, or even have no properties at all. Essentially, it makes all properties of a type nullable.

PartialTypeEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Pick

`Pick` is a utility type that constructs a new type by selecting a set of properties from an existing type. You specify which properties you want to include in the new type using their keys. This is useful when you need a subset of properties from a larger type definition.

PickCoreEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Readonly

The `Readonly` utility type in TypeScript constructs a new type where all properties of the original type are set as read-only. This means that once a property is initialized, its value cannot be changed later. This is useful for creating immutable objects and ensuring that data is not accidentally modified.

ReadonlyCoreEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

Record Utility Type

The `Record` utility type in TypeScript is used to construct a new type where the keys are of a specific type (typically a string, number, or symbol) and the values are of another specified type. This is useful when you want to define an object structure with a predefined set of keys and a consistent type for the values associated with those keys. Essentially, it's a shorthand for defining object types with specific key-value pairings.

RecordUtilityEngineering
1 khái niệmChi tiết
Cốt lõiIDE Lab

Recursive Types

Recursive types in TypeScript allow you to define types that refer to themselves. This is especially useful for representing data structures that have a nested or hierarchical structure, like trees or linked lists. By using recursion in type definitions, you can ensure that the type system accurately reflects the self-referential nature of these data structures, enabling strong type checking throughout your code.

RecursiveTypesEngineering
1 khái niệmChi tiết
Khuyên họcKiến thức

ReturnType

`ReturnType` is a utility type that extracts the return type of a function. Given a function type, `ReturnType<Type>` produces a new type that represents the type of value that the function returns. This is useful when you need to work with the output of a function without knowing its exact return type beforehand.

ReturnTypeCoreEngineering
2 khái niệmChi tiết
Cốt lõiIDE Lab

Running TypeScript

Running TypeScript involves converting your `.ts` files into JavaScript files that can be executed by a JavaScript runtime environment, such as a web browser or Node.js. This conversion, known as compilation or transpilation, is performed by the TypeScript compiler (`tsc`). After compilation, the resulting JavaScript files can then be run in the appropriate environment, allowing you to leverage the benefits of TypeScript during development while maintaining compatibility with standard JavaScript execution environments.

RunningTypeScriptEngineering
3 khái niệmChi tiết
Khuyên họcKiến thức

Satisfies Keyword

The `satisfies` keyword in TypeScript is used to ensure that a value conforms to a specific type without explicitly declaring that type. This is particularly useful when you want to check that an object's structure matches a type definition but still allow TypeScript to infer a more specific type for the object's properties. It validates the shape of the value against the specified type, and if valid it retains the initial type information.

SatisfiesKeywordEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

String

A string represents a sequence of characters. It's used to store and manipulate textual data, like words, sentences, or any sequence of symbols. Strings are typically enclosed in single quotes (`'...'`), double quotes (`"..."`), or backticks (`` `...` ``).

StringCoreEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

Template Literal Types

Template literal types in TypeScript are a way to create new string literal types by combining existing string literal types, much like template literals in JavaScript. They allow you to define string types that are composed of other string types with specific patterns or structures. This is done by embedding other types within a string literal definition, enabling you to enforce stricter type safety and create more descriptive types based on string manipulation.

TemplateLiteralEngineering
1 khái niệmChi tiết
Cốt lõiIDE Lab

Truthiness

Truthiness in TypeScript, as in JavaScript, refers to the concept of a value evaluating to `true` when encountered in a Boolean context. Certain values are inherently "truthy" while others are "falsy." TypeScript uses this understanding to refine the type of a variable based on the outcome of a truthiness check, effectively narrowing its potential types to those that are compatible with a `true` outcome. This allows for more precise type checking within conditional blocks.

TruthinessCoreEngineering
2 khái niệmChi tiết
Khuyên họcIDE Lab

TS and JS Interoperability

TypeScript and JavaScript interoperability refers to the ability of TypeScript code to work seamlessly with existing JavaScript code and vice versa. This means you can use JavaScript libraries in your TypeScript projects and gradually migrate JavaScript code to TypeScript without rewriting everything at once. It allows for a smooth transition by leveraging existing codebases and libraries while adopting the benefits of TypeScript.

TSandEngineering
3 khái niệmChi tiết
Cốt lõiIDE Lab

ts-node

ts-node is a package that lets you directly run TypeScript code without needing to pre-compile it into JavaScript. It does this by providing a TypeScript execution environment for Node.js, allowing you to execute `.ts` files directly from the command line or by using it as a Node.js module. Essentially, it combines the TypeScript compiler (`tsc`) and Node.js into a single, streamlined process.

ts-nodeCoreEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

TS Playground

The TS Playground is an online, interactive environment that allows you to write, compile, and share TypeScript code directly in your web browser. It provides immediate feedback on your code, showing compilation errors and the resulting JavaScript output in real-time. This makes it a convenient tool for experimenting with TypeScript features, prototyping small projects, and quickly testing code snippets without needing a local development environment.

TSPlaygroundEngineering
3 khái niệmChi tiết
Cốt lõiIDE Lab

tsc

`tsc` is the command-line compiler for TypeScript. It takes TypeScript code as input and transforms it into JavaScript code that can be executed by browsers or other JavaScript runtimes like Node.js. You use `tsc` to check for type errors, enforce coding standards, and ultimately prepare your TypeScript code for deployment.

tscCoreEngineering
1 khái niệmChi tiết
Khuyên họcIDE Lab

tsconfig.json

`tsconfig.json` is a configuration file that specifies how the TypeScript compiler should transpile your TypeScript code into JavaScript. It controls various compilation options such as target ECMAScript version, module system, and source maps. This file lives at the root of a TypeScript project and allows you to define the project's compilation settings in a declarative and reproducible manner.

tsconfig.jsonCoreEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Tuple

A tuple is a typed array with a pre-defined length and types for each index. Each position in the tuple can have its own specific type, allowing you to create arrays with a known structure where the type of element is known at each index. Tuples ensure that the number of elements matches the defined length and that each element is of the expected type.

TupleCoreEngineering
2 khái niệmChi tiết
Khuyên họcKiến thức

Type Aliases

Type aliases in TypeScript create a new name for an existing type. This new name can then be used anywhere you would normally use the original type. They don't create a new type; instead, they offer a more readable and convenient way to refer to potentially complex or frequently used types, such as unions, intersections, or tuple types.

TypeAliasesEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

Type Compatibility

Type compatibility is a mechanism in TypeScript that determines whether one type can be assigned to another based on the structure of the types. Unlike languages that use nominal typing where compatibility is based on explicit declarations, TypeScript uses structural typing to compare members. If a target type has all the required members of a source type, the compiler considers them compatible, regardless of their specific names or hierarchies.

TypeCompatibilityEngineering
3 khái niệmChi tiết
05
Giai đoạn 5Các giải pháp quy mô lớn và tư duy dẫn dắt kỹ thuật

Chuyên Gia & Mở Rộng Hệ Thống

Giai đoạn 5 tập trung hoàn thiện 17 chủ đề then chốt.

Cốt lõiKiến thức

Type Guards / Narrowing

Type guards and narrowing are techniques in TypeScript used to refine the type of a variable within a specific scope. They allow you to tell the TypeScript compiler that a variable is more specific than its declared type, enabling you to safely perform operations that would otherwise result in type errors. This is particularly useful when dealing with union types or situations where the initial type of a variable is broad.

TypeGuardsEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

Type Inference

Type inference is the automatic deduction of the data type of an expression in a programming language. Instead of explicitly declaring the type of a variable, the compiler or interpreter can infer it based on the value assigned to it or how it's used within the code. This reduces the need for verbose type annotations, making code more concise and readable while still providing the benefits of type safety.

TypeInferenceEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Type Predicates

Type predicates are a way to refine the type of a variable within a TypeScript function. They're used to tell the TypeScript compiler that a specific condition guarantees a variable is of a certain type. Instead of the compiler inferring the type based on basic checks, a type predicate explicitly asserts that if a function returns `true`, the argument must be of the specified type.

TypePredicatesEngineering
2 khái niệmChi tiết
Khuyên họcIDE Lab

typeof Type Guards

`typeof` in TypeScript is a way to narrow down the type of a variable based on its JavaScript `typeof` operator result. This allows you to write more precise code by checking the type of a variable (like string, number, boolean, symbol, or object) and then treating it accordingly within a specific block of code. By inspecting a variable's fundamental JavaScript type, TypeScript can infer a more specific type within that conditional block, helping catch potential errors and enabling safer operations.

typeofTypeEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Types vs Interfaces

In TypeScript, both types and interfaces are ways to define the shape of an object. They specify what properties an object should have and the data type of those properties. Types can describe simple types like primitives (string, number, boolean) or more complex structures like unions and intersections, while interfaces are primarily used to define the structure of objects, including their properties and methods. The key difference lies in their extensibility and use cases.

TypesvsEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

TypeScript Functions

Functions in TypeScript are reusable blocks of code designed to perform specific tasks. They can accept inputs (parameters), process them, and return a result. TypeScript enhances JavaScript functions by adding type annotations to parameters and return values, enabling better code clarity and error checking during development. This helps ensure that functions receive and produce the expected data types, leading to more robust and maintainable code.

TypeScriptFunctionsEngineering
2 khái niệmChi tiết
Cốt lõiIDE Lab

TypeScript Interfaces

Interfaces in TypeScript are a way to define a contract for the structure of an object. They describe the shape that an object should have, specifying the names, types, and optionality of its properties. Essentially, an interface names a specific combination of fields and their types. These interfaces don't compile into JavaScript; they are purely a TypeScript construct used for type-checking during development.

TypeScriptInterfacesEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

TypeScript Modules

Modules in TypeScript (and JavaScript) are a way to organize code into reusable and manageable blocks. Each module encapsulates its own variables, functions, classes, and interfaces, preventing naming collisions and promoting code modularity. Modules explicitly export parts that other code can use and import modules to gain access to their exported functionalities.

TypeScriptModulesEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

TypeScript Types

TypeScript Types define the kind of values a variable can hold. They essentially act as labels that specify the allowed data types, like numbers, strings, or more complex objects. By assigning types, TypeScript can perform static type checking, catching potential errors during development before the code is even run. This helps improve code reliability and makes it easier to understand how data flows through your application.

TypeScriptTypesEngineering
3 khái niệmChi tiết
Khuyên họcIDE Lab

TypeScript vs JavaScript

TypeScript and JavaScript are both programming languages used for web development. JavaScript is a dynamic language that is interpreted at runtime by the browser, meaning that type errors are only caught when the code is executed. TypeScript, on the other hand, is a superset of JavaScript that adds optional static typing. This allows developers to catch errors during development and before runtime, leading to more robust and maintainable code. TypeScript code must be compiled into JavaScript before it can be run in a browser or other JavaScript environment.

TypeScriptvsEngineering
3 khái niệmChi tiết
Cốt lõiKiến thức

Typing Functions

Functions in programming are reusable blocks of code that perform specific tasks. Typing functions in TypeScript means defining the types of the parameters a function accepts and the type of value it returns. This allows the TypeScript compiler to verify that functions are used correctly, preventing type-related errors at runtime and enhancing code maintainability and readability.

TypingFunctionsEngineering
1 khái niệmChi tiết
Khuyên họcKiến thức

undefined

`undefined` is a primitive type in TypeScript that represents a variable that has been declared but has not yet been assigned a value. When a variable is initialized without a value or a function reaches the end of its execution without a return statement, it implicitly holds this value. It signifies the absence of any object or meaningful data.

undefinedCoreEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Union Types

Union types allow a variable to hold values of different types. This means you can specify that a variable can be, for example, either a `string` or a `number`. You define a union type using the pipe (`|`) symbol to separate the possible types. This provides flexibility in situations where a variable might accept multiple different data types.

UnionTypesEngineering
3 khái niệmChi tiết
Khuyên họcKiến thức

Unknown Type

The `unknown` type in TypeScript represents a value that can be anything. Unlike `any`, which essentially disables type checking, `unknown` forces you to perform type checks or type assertions before you can perform operations on a value declared as `unknown`. This helps prevent unexpected errors at runtime by ensuring you've handled the potential type of the value.

UnknownTypeEngineering
2 khái niệmChi tiết
Cốt lõiKiến thức

Useful Packages

TypeScript has a large ecosystem of packages that can be used to extend the language or to add functionality to your project.

UsefulPackagesEngineering
3 khái niệmChi tiết
Khuyên họcKiến thức

Utility Types

Utility Types in TypeScript are built-in generic types that perform common type transformations. They allow you to create new types based on existing ones by applying operations like making properties optional, required, readonly, or picking specific properties. These utilities enhance type safety and code reusability by enabling you to express complex type manipulations in a concise and declarative way.

UtilityTypesEngineering
1 khái niệmChi tiết
Cốt lõiKiến thức

Void Type

The `void` type in TypeScript represents the absence of a value. It is commonly used as the return type of functions that do not return any value, essentially indicating that the function performs an action but doesn't produce a result. A function declared with a `void` return type is not expected to return any data back to the caller.

VoidTypeEngineering
2 khái niệmChi tiết