TypeScript Basics Quiz

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Quel mot-clé est utilisé pour déclarer une variable dans l'exemple donné ?

  • define
  • var (correct)
  • const
  • let

Quelle version de JavaScript est spécifiée pour la compilation par défaut dans TypeScript ?

  • es6
  • es2015
  • es2018
  • es2016 (correct)

Quel type de données est inclus dans TypeScript mais pas dans JavaScript ?

  • String
  • Boolean
  • Enum (correct)
  • Array

Quelle affirmation concernant le type 'any' est correcte ?

<p>Il peut contenir n'importe quel type de données. (D)</p> Signup and view all the answers

Quelle option spécifie le répertoire où le fichier compilé sera stocké dans la configuration ?

<p>./dist (D)</p> Signup and view all the answers

Que représente un enum dans les langages de programmation comme C# ou Java?

<p>Un moyen d'associer un nom lisible à un numéro spécifique (B)</p> Signup and view all the answers

Quel est l'avantage principal des enums par rapport aux constantes numériques?

<p>Ils offrent des noms clairs pour un ensemble de valeurs numériques. (D)</p> Signup and view all the answers

Quel sera la valeur de 'mySize' si l'on utilise l'enum suivant? enum Size {Small = 1, Medium, Large } et si on assigne 'let mySize: Size = Size.Medium;'?

<p>2 (B)</p> Signup and view all the answers

Quel est le résultat de la déclaration 'let strLength: number = (someValue as string).length;' si 'someValue' est une chaîne?

<p>La longueur de 'someValue' (A)</p> Signup and view all the answers

Que permet la surcharge de fonction dans TypeScript?

<p>D'avoir plusieurs fonctions avec le même nom et des paramètres différents (C)</p> Signup and view all the answers

Que représente le type 'void' dans une fonction?

<p>L'absence de valeur de retour. (B)</p> Signup and view all the answers

Les enums lancent une exception s'ils sont utilisés avec des valeurs non numériques.

<p>Faux (D)</p> Signup and view all the answers

Quelle est la bonne façon de déclarer une fonction qui retourne le résultat d'une addition de deux nombres en TypeScript?

<p>function add(x: number, y: number): number { return x + y; } (D)</p> Signup and view all the answers

Quel est un exemple de déclaration d'un enum de chaînes?

<p>enum DoorStateString {Open = 'open', Closed = 'closed'} (A)</p> Signup and view all the answers

Que permet d'activer la configuration 'noImplicitReturns' dans le fichier tsconfig.json?

<p>D'interrompre automatiquement la fonction si aucune valeur de retour n'est spécifiée (D)</p> Signup and view all the answers

Quelle valeur peut être assignée à une variable de type 'void'?

<p>undefined ou null. (B)</p> Signup and view all the answers

Quelle syntaxe est utilisée pour définir un type de fonction dans TypeScript?

<p>let divide: (a: number, b: number) =&gt; number; (C)</p> Signup and view all the answers

Quand utiliserait-on le type 'optional' dans une énumération?

<p>Pour permettre à une valeur d'être indéfinie. (C)</p> Signup and view all the answers

Quel est le risque principal de l'utilisation du type 'any' en TypeScript ?

<p>Perdre les avantages de la vérification de type. (B)</p> Signup and view all the answers

Quelle déclaration est correcte pour un tableau contenant uniquement des nombres ?

<p>let list: number[] = [1, 2, 3]; (D)</p> Signup and view all the answers

Comment peut-on déclarer un tuple contenant une chaîne et un nombre ?

<p>let x: [string, number]; (D)</p> Signup and view all the answers

Quel type de valeur peut être incorrectement assigné à un tuple spécifié comme [string, number] ?

<p>[10, 'hello'] (A)</p> Signup and view all the answers

Quel est l'effet de déclarer un tableau vide en TypeScript ?

<p>Les éléments du tableau seront de type any. (C)</p> Signup and view all the answers

Pourquoi les tuples sont-ils considérés comme utiles avec deux éléments ?

<p>Ils deviennent difficiles à lire au-delà de deux éléments. (B)</p> Signup and view all the answers

Comment peut-on indiquer qu'un élément d'un tuple est optionnel ?

<p>Avec le symbole ?. (D)</p> Signup and view all the answers

Quel impact a la configuration 'noImplicitAny' dans le fichier tsconfig ?

<p>Elle permet de déclarer des variables sans type. (A)</p> Signup and view all the answers

Quelle déclaration est correcte concernant les types null et undefined ?

<p>Les types null et undefined sont des sous-types pour les autres types. (D)</p> Signup and view all the answers

Quel est le rôle de l'opérateur d'assertion non-nulle (!) en TypeScript ?

<p>Il indique au compilateur qu'une variable ne sera jamais null ou undefined. (B)</p> Signup and view all the answers

Quel est l'effet d'une assertion de type en TypeScript ?

<p>Elle ne fait aucune vérification spéciale mais aide le compilateur. (D)</p> Signup and view all the answers

Quel type d'erreur obtiendrait-on en essayant d'assigner une valeur à une variable de type null ?

<p>Une erreur de compilation se produira. (B)</p> Signup and view all the answers

Quelle affirmation est vraie concernant la valeur d'une variable de type undefined ?

<p>Elle doit toujours être assignée à undefined. (D)</p> Signup and view all the answers

Quelle serait la conséquence d'utiliser l'opérateur d'assertion non-nulle de manière incorrecte ?

<p>Une erreur d'exécution peut survenir si la valeur est null. (C)</p> Signup and view all the answers

L'assignation de quelle valeur à une variable de type undefined lèvera une erreur ?

<p>une chaîne de caractères (A)</p> Signup and view all the answers

Pourquoi les types null et undefined n'ont-ils pas d'application pratique dans des variables de type primitif ?

<p>Car ils ne peuvent contenir que null ou undefined. (A)</p> Signup and view all the answers

Comment une classe est-elle définie en TypeScript?

<p>Avec le mot clé 'class' (D)</p> Signup and view all the answers

Quel est le rôle du constructeur dans une classe en TypeScript?

<p>Pour créer des instances d'une classe (B), Pour initialiser les propriétés (D)</p> Signup and view all the answers

Quel est l'effet de l'utilisation de l'accès 'private' pour une propriété d'une classe?

<p>Accessible uniquement dans la classe (C)</p> Signup and view all the answers

Qu'est-ce qui est vrai concernant le 'super()' dans les classes dérivées?

<p>Doit être appelé avant d'accéder à 'this' (B)</p> Signup and view all the answers

Comment est-il possible d'avoir plusieurs définitions de constructeur dans une classe?

<p>En utilisant le surchargement du constructeur (A)</p> Signup and view all the answers

Quelles sont les trois modificateurs d'accès en TypeScript?

<p>public, private, protected (D)</p> Signup and view all the answers

Dans l'exemple suivant, quel est le problème avec la classe 'BadGreeter'? class BadGreeter { name: string; }

<p>La propriété 'name' n'est pas initialisée. (D)</p> Signup and view all the answers

Que se passe-t-il si vous n'appelez pas 'super()' dans un constructeur dérivé?

<p>Une erreur de compilation se produit (D)</p> Signup and view all the answers

Flashcards

Chaîne de caractères (String)

C'est un type de données qui représente une séquence de caractères. Exemples: "Bonjour", "123", "true".

Nombre (Number)

C'est un type de données qui représente un nombre. Exemples: 10, 3.14, -5.

Tout (Any)

Il est utilisé pour définir un type de données qui peut prendre n'importe quelle valeur. Il contourne la vérification de type.

Booléen (Boolean)

C'est un type de données qui représente une valeur booléenne, qui peut être soit vraie (true) soit fausse (false).

Signup and view all the flashcards

Tableau (Array)

C'est un type de données qui représente un tableau, une collection ordonnée d'éléments du même type. Exemples: [1, 2, 3], ["a", "b", "c"], [true, false].

Signup and view all the flashcards

Type any

Le type any indique que TypeScript ne vérifie pas le type d'une variable.

Signup and view all the flashcards

Pourquoi éviter any ?

Le type any permet de déclarer des variables dont le type n'est pas vérifié par TypeScript. Cela peut mener à des erreurs difficiles à détecter.

Signup and view all the flashcards

Que peut contenir une variable de type any ?

Une variable de type any peut contenir n'importe quelle valeur, y compris des valeurs de types différents.

Signup and view all the flashcards

Comment utiliser any?

Pour utiliser any, vous pouvez le déclarer explicitement ou utiliser l'option noImplicitAny dans votre fichier tsconfig.json.

Signup and view all the flashcards

Tableau de nombres

Un tableau de type number[] contient uniquement des nombres.

Signup and view all the flashcards

Tuple

Un tuple est un tableau dont la taille et les types d'éléments sont fixes.

Signup and view all the flashcards

Types d'éléments dans un tuple

Un tuple peut contenir des éléments de types différents.

Signup and view all the flashcards

Éléments optionnels dans un tuple

Les éléments d'un tuple peuvent être optionnels.

Signup and view all the flashcards

Type optionnel

Un type optionnel en TypeScript est indiqué par un point d'interrogation (?) après un type de données existant. Cela signifie qu'une variable de ce type peut être soit une valeur définie, soit null ou undefined.

Signup and view all the flashcards

Énumération (enum)

Une énumération (enum) permet de donner des noms clairs et significatifs à un ensemble de valeurs numériques. Chaque nom représente une valeur numérique, ce qui rend le code plus lisible.

Signup and view all the flashcards

Énumération const

Une énumération const est une énumération dont les valeurs sont précalculées et remplacées par leur valeur numérique au moment de la compilation. Cela permet d'améliorer les performances car il n'y a pas d'objets créés à l'exécution.

Signup and view all the flashcards

Énumération de chaîne

Une énumération de chaîne est une variante d'une énumération standard où les valeurs numériques sont remplacées par des chaînes de caractères.

Signup and view all the flashcards

Void

Le type void représente l'absence de type. Il sert généralement comme type de retour pour les fonctions qui ne renvoient aucune valeur. Les variables déclarées en tant que void ne peuvent prendre que les valeurs undefined ou null.

Signup and view all the flashcards

Types null et undefined

En TypeScript, les types null et undefined sont des sous-types de tous les autres types. Cela signifie que toute variable peut être affectée à null ou undefined, même si elle est typée en tant que number, string, etc.

Signup and view all the flashcards

Opérateur d'assertion non-null

En TypeScript, l'opérateur d'assertion non-null (!) est utilisé pour indiquer au compilateur qu'une variable ne sera jamais null ou undefined. Cela permet de contourner les vérifications de type et d'éviter les erreurs d'exécution.

Signup and view all the flashcards

Conversion de type

La conversion de type (Type Assertion) en TypeScript permet de dire au compilateur que vous savez plus sur le type d'une variable que lui. Elle est similaire au type casting dans d'autres langages, mais ne modifie pas les données. Elle sert uniquement pour la compilation.

Signup and view all the flashcards

Crochets angulaires en TypeScript

Les crochets angulaires < > permettent de spécifier le type de données d'une variable lors de sa déclaration en TypeScript. Par exemple, <string> indique que la variable est une chaîne de caractères.

Signup and view all the flashcards

Typage des fonctions en TypeScript

Les fonctions en TypeScript peuvent avoir des types définis pour leurs paramètres d'entrée et leur type de retour. Par exemple, function add(x: number, y: number): number indique que la fonction add prend deux nombres en entrée et retourne un nombre.

Signup and view all the flashcards

Surcharge de fonction en TypeScript

La surcharge de fonction permet de définir plusieurs fonctions avec le même nom mais des paramètres d'entrée différents. Le compilateur TypeScript détermine la bonne fonction à appeler en fonction des arguments fournis à l'exécution.

Signup and view all the flashcards

Options de configuration tsconfig.json

L'utilisation de noUnusedLocals, noUnusedParameters et noImplicitReturns dans le fichier tsconfig.json permet de vérifier l'utilisation des variables locales, des paramètres de fonction et des retours explicites dans le code TypeScript. Cela favorise la qualité du code et la détection d'erreurs.

Signup and view all the flashcards

Fonction add en TS

La fonction add(x: number, y: number): number prend deux arguments de type nombre (x et y) et retourne un nombre (leur somme).

Signup and view all the flashcards

Définition de classe

Une classe en TypeScript est définie à l'aide du mot-clé class, suivi du nom de la classe. La définition de classe peut inclure des champs (également appelés propriétés ou attributs), des méthodes (fonctions) et un constructeur.

Signup and view all the flashcards

Constructeur

Un constructeur est une méthode spéciale dans un objet qui est appelée automatiquement lorsque l'objet est créé. Il est utilisé pour initialiser les propriétés de l'objet. Le constructeur est identifié par le mot-clé constructor et est généralement utilisé pour initialiser les caractéristiques d'un objet.

Signup and view all the flashcards

Champ

Un champ, aussi appelé propriété ou attribut d'une classe est une variable qui représente une propriété ou une caractéristique d'un objet de cette classe. Par exemple, la classe Animal peut avoir un champ appelé "nom" qui stocke le nom de l'animal. Les champs sont définis à l'intérieur de la classe, avant le constructeur ou les autres méthodes.

Signup and view all the flashcards

Méthode

Une méthode est une fonction qui est définie à l'intérieur d'une classe et représente un comportement ou une action que les objets de cette classe peuvent effectuer. Par exemple, la classe Animal peut avoir une méthode appelée "makeSound" qui émet un son correspondant à l'animal. Les méthodes définissent ce que peuvent faire les objets.

Signup and view all the flashcards

Classe dérivée

Une classe dérivée est une classe qui hérite des propriétés et des méthodes d'une autre classe, appelée classe de base ou classe parent. Cela permet de réutiliser le code et de créer des hiérarchies d'objets.

Signup and view all the flashcards

Le mot-clé super

Le mot-clé super est utilisé dans une classe dérivée pour accéder aux membres de la classe de base. Il s'agit d'appeler le constructeur de la classe parent afin d'initialiser ses attributs.

Signup and view all the flashcards

Modificateur d'accès public

Le mot-clé public indique que les membres (propriétés ou méthodes) sont accessibles depuis n'importe quelle partie du code. Ils sont visibles et peuvent être utilisés par tous.

Signup and view all the flashcards

Modificateur d'accès protected

Le mot-clé protected indique que les membres (propriétés ou méthodes) sont accessibles uniquement depuis la classe elle-même et ses classes dérivées (héritées). Ils ne sont pas visibles de l'extérieur de la classe et de ses descendants.

Signup and view all the flashcards

Study Notes

Introduction to TypeScript

  • TypeScript is a superset of JavaScript, adding optional type annotations and features like interfaces, classes, and namespaces.
  • JavaScript is a dynamically-typed language, primarily used for client-side web development, and can also be used for server-side development.
  • TypeScript offers optional type annotations, allowing you to define the data types of variables, parameters, and return values, helping catch type-related errors during compilation.
  • TypeScript extends JavaScript syntax with features like interfaces, classes, and namespaces, creating a more robust structure for large-scale projects.

Core Differences

  • Types: TypeScript uses optional type annotations, while JavaScript is dynamically-typed.
  • Syntax: TypeScript extends JavaScript syntax with interfaces, classes, and namespaces.
  • Tooling: TypeScript provides better tooling support, including better editor integration, type checking, and code refactoring.
  • Backward Compatibility: TypeScript is fully compatible with existing JavaScript code

Pros and Cons

  • Pros: More robust code, easier debugging (early error detection), improved code readability, and wider popularity.
  • Cons: Requires a compilation step (transpilation), more features to learn, and not strictly static typing (some flexibility from any type).

Setup

  • To use the TypeScript compiler, install it globally using npm i -g typescript.
  • Create TypeScript files with a .ts extension. Any valid JavaScript code is also valid TypeScript code.
  • Compile the code using tsc index.ts in your command line. This generates a JavaScript version of your TypeScript file.

Syntax

  • TypeScript allows annotating variables with their specific types.
  • For example: let age: number = 20;
  • Compiling TypeScript code yields JavaScript code using variables defined with var.

Configuration

  • You create a configuration file (tsconfig.json) using the command tsc --init.
  • This file allows controlling various aspects of the compilation process.
  • The target setting specifies the JavaScript version TypeScript should compile to (e.g., target: "es2016").

Basic TS Types

  • TypeScript supports fundamental data types similar to JavaScript (Boolean, Number, String) along with arrays, tuples, enums, void, null, and undefined.
  • Using the any type can negate type safety benefits.

Built-in Types

  • TypeScript allows annotating variables with types explicitly.
  • If a variable is not initialized, its default type is any.

"any" type

  • Using any bypasses type checking.
  • Best practice: avoid using any whenever possible.

Arrays

  • TypeScript supports arrays with specific types (e.g., number[], Array<number>).
  • Empty arrays default to the any type, which is less type-safe.

Tuples

  • Tuples allow arrays with fixed lengths and types, e.g. let x: [string, number] = ["hello", 10];
  • Tuple elements are accessed by their index, like any array

Enums

  • Enums define sets of named constants.
  • Example: enum Size { Small, Medium, Large }.

String Enums

  • Another enum variant using string constants.
  • e.g enum DoorStateString {Open = "open", Closed = "closed", Ajar = "ajar"}

Void

  • Void indicates a function that doesn't return a value.

Null & Undefined

  • null and undefined types in TypeScript often correspond to their JavaScript counterparts.
  • Avoid using them excessively for type safety.
  • The optional chaining operator (?.) is useful for safely accessing properties of potentially null or undefined values.

Non-Null Assertion

  • The ! operator asserts that a variable is not null or undefined.
  • Use with caution as it can lead to runtime errors in unexpected situations.

Type Assertions

  • Use angle brackets (<type>variable) or the as keyword to manually specify the type of a variable.

Functions

  • Functions in TypeScript can specify input and return types, enhancing type safety.

Function Overloading

  • TypeScript allows defining multiple functions with the same name that accept different parameter types.
  • TypeScript then uses these function signatures to determine the best matching implementation based on the data types of the arguments.

Objects

  • TypeScript supports defining objects with specific property types using type declarations or interfaces.
  • Read-only properties are useful to protect data integrity.

Advanced Types

  • TypeScript includes: type aliases, unions, intersections, type narrowing, nullable types, the unknown type.

Interfaces

  • TypeScript Interfaces allow defining a contract/structure for an object by specifying the types of its properties.
  • Interfaces are like type declarations, but the keyword is interface instead of type. You can have interface inheritance, unlike with types

Interfaces vs Type Aliases

  • Interfaces can be extended; type aliases cannot (which is the key difference).

Classes

  • TypeScript Classes provide blueprints for creating objects, bundling data and methods.
  • Use the class keyword for declaration.

Constructor Overloading

  • In a class, similar to functions, you can have multiple implementations of a constructor with different parameter types

Access Modifiers

  • public (default): accessible everywhere.
  • private: accessible only within the same class.
  • protected: accessible in the class and any subclasses.

Abstract Classes

  • Abstract classes cannot be instantiated directly.
  • Abstract methods have no implementation, forcing subclasses to provide them.

Inheritance vs Polymorphism

  • Inheritance: Subclasses inherit properties and methods from parent classes.
  • Polymorphism: Objects of different classes act as members of a common class that has an interface/inheritance hierarchy, allowing for flexible behavior.

Generics

  • TypeScript generics allow code to work with different data types by using placeholders.
  • The data type is specified during the use of the generic, not in the declaration.

TP: Book Reading Tracker

  • Describes a book reading tracker application that uses TypeScript, HTML, and potentially MongoDB for data storage, to manage and track book reading progress.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

TypeScript Slides PDF

More Like This

Use Quizgecko on...
Browser
Browser