Références :
- TypeScript: JavaScript With Syntax For Types. (typescriptlang.org)
- https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html
- https://www.typescriptlang.org/docs/handbook/2/basic-types.html
- https://www.linkedin.com/learning/l-essentiel-de-typescript-4/
- https://www.typescriptlang.org/cheatsheets
- Télécharger TypeScript sur github
Introduction
TypeScript est un langage open source et il a été créé par Microsoft. Il faut compiler TypeScript pour obtenir du javascript car seul ce dernier est compris des navigateurs. TypeScript est une surcouche au javascript. Cela signifie qu'il fournit toutes les fonctionnalités du js "vanilla" et en ajoute de nouvelles dont voici les principales :
- un mécanisme de cohérence des types de données (d'où le nom) qui fait en sorte que le TypeScript soit en "typage statique" (comme Java ou C++) alors que le js est en "typage dynamique"
- code completion
- refactoring,
- ...
Installation
npm install -g typescript
Compilation
tsc test.ts
Paramétrage du compilateur
tsc --init
Puis opérer les modifications suivantes dans le fichier tsconfig.json:
"target": "ES2016", "rootDir": "./src", "outDir": "./dist"
Première application avec node et TypeScript
- Suivre le tuto suivant : https://khalilstemmler.com/blogs/typescript/node-starter-project/
- Vérifier que vous pouvez bien utiliser les commandes :
npm run start:dev
etnpm run build
- Ajouter les répertoires src/mocks, src/services et src/models
- Dans le répertoire mocks, ajouter le fichier user.json
{ "id": 1, "name": "Dylan" }
- Dans le répertoire services, ajouter le fichier user.ts qui exporte la fonction getUser qui renvoie une promesse. Dans le cas favorable, la promesse renvoie l'utilisateur que l'on a importé depuis user.json. Attention à typer le retour de getUser avec une interface UserInterface que l'on aura déclaré dans /models/Users.ts
export interface UserInterface { id: number; name: string; }
- Enfin, dans le fichier index.ts, créer une fonction anonyme immédiate asynchrone qui fait appel à getUser() et afficher dans la console l'utilisateur. Vous devriez obtenir dans le terminal un message du type :
[nodemon] starting `npx ts-node ./src/index.ts` user : { id: 1, name: 'Dylan' } [nodemon] clean exit - waiting for changes before restart
Create-react-app + typescript
Documentation :
- https://create-react-app.dev/docs/adding-typescript
- https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/basic_type_example
Pour créer une application react utilisant typescript :
npx create-react-app my-app --template typescript
Exemples de typages avancés :
Objet qui requiert au moins une propriété d'une interface :
type RequireAtLeastOne<T> = { [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>> }[keyof T] interface TaskInterfacePost { description: string; done: boolean; order: number; } const test:RequireAtLeastOne<TaskInterfacePost> = { done: true }