> For the complete documentation index, see [llms.txt](https://guide-angular.wishtack.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guide-angular.wishtack.io/typescript/de-lecmascript-au-typescript.md).

# De l'ECMAScript au TypeScript

L'ECMAScript est quasiment du TypeScript valide étant donné que le typage est optionnel.

Il est donc facile de migrer progressivement de l'ECMAScript vers le TypeScript.

## Les Propriétés

L'un des principaux changements empêchant l'ECMAScript d'être du TypeScript valide est la nécessité de déclarer les propriétés d'une classe.

En renommant simplement le fichier JavaScript en `.ts`, l'IDE commence à se plaindre.

![](https://4009647861-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L9vDDYxu6nH7FVBtFFS%2F-LAJ6L20gjkPc9aeXa1e%2F-LAJ7b2WhyAQDlfH6Zoj%2Ftypescript-missing-properties.png?alt=media\&token=e5f949db-2f8b-4255-9249-d4c09689d1df)

Le compilateur TypeScript (`tsc`) est également mécontent.

```bash
$ tsc customer.ts
customer.ts(11,18): error TS2339: Property 'firstName' does not exist on type 'Customer'.
customer.ts(12,18): error TS2339: Property 'lastName' does not exist on type 'Customer'.
```

Le minimum syndical est donc de déclarer ces propriétés.

```typescript
class Customer {

    firstName;
    lastName;

    constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

}
```

{% hint style="success" %}
La bonne pratique est de déclarer les propriétés avant le constructeur.
{% endhint %}
