Espace de noms VS Module

Espace de noms

Dans IPerson.ts :

namespace App {
    inteface IPerson {
        name: string;
        age: number;
    }

    export class Person implements IPerson {
        name: string;
        age: number;

        constructor(name: string, age: number) {
            this.name = name;
            this.age = age;
        }
    }
}

Dans script.ts :

/// <reference path="IPerson.ts" />
namespace App {
    const person = new Person('Albert', 45);
}

Dans tsconfig.json, afin de ne générer qu’un seul fichier Javascript :

"module": "amd",
"outFile": "./public/app.js"

Modules ES6

Dans IPerson.ts :

inteface IPerson {
    name: string;
    age: number;
}

export class Person implements IPerson {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }
}

Dans script.ts :

import { Person } from './IPerson.js'

const person = new Person('Albert', 45);

Dans index.html :

<script type="module" src="./script.js" defer></script>

Dans tsconfig.json :

"module": "es2015"