Développement d’applications d’entreprise 2

1.1- TypeScript

1.2- Angular

L'écosystème JavaScript possède une variante fortement typée, TypeScript, permettant un encadrement plus rigoureux de l'expérience de développement. On ne peut l'exécuter directement dans le navigateur(qui ne comprend que JS), il faut d'abord le transpiler.

// npx ts-node --compilerOptions '{"module": "none"}' $FILENAME

let pseudo: string

// console.log(`Hello ${pseudo}`) // uninitialized

pseudo = 'James'
console.log(`Hello ${pseudo}`)

// name = null // type validation

interface Greeter {
name: string | undefined // union type

greet?(): void // optional
}

class Person implements Greeter { // interface
readonly name: string | undefined
// public par defaut
// get, set, readonly

constructor(name?: string) { // optional param
this.name = name // Non-null assertion si on enleve assignation ici et | undefined et ajoute name!
}

greet() { // plus strict mais pas moins
const name = this.name ?? "anonymous" // null check

console.log(`Hello ${name.toUpperCase()}`)
}
}

// function ahoy(greeter: Person) {
function ahoy(greeter: Greeter) {
console.log(`Ahoy ${greeter.name}`)
}

let p = new Person()

// p.name = 'a' // readonly

p.greet()

p = new Person("James")

p.greet()

ahoy(p)

ahoy({name: "Mathieu"}) // duck typing

// Decorators
// https://www.typescriptlang.org/docs/handbook/decorators.html