diff --git a/doc/papyrus/model-jalhyd.uml b/doc/papyrus/model-jalhyd.uml
index 00de68fe838b4f5fe6b3985c1431221237345b27..38c4b3e2549c2348ddada31b42d2f82cb248c3b6 100644
--- a/doc/papyrus/model-jalhyd.uml
+++ b/doc/papyrus/model-jalhyd.uml
@@ -222,7 +222,7 @@
       </ownedParameter>
     </ownedOperation>
   </packagedElement>
-  <packagedElement xmi:type="uml:Interface" xmi:id="_TMMMIHMCEei6M4wQtYraFw" name="NamedIterableValues">
+  <packagedElement xmi:type="uml:Interface" xmi:id="_TMMMIHMCEei6M4wQtYraFw" name="INamedIterableValues">
     <generalization xmi:type="uml:Generalization" xmi:id="_WJfqwHMCEei6M4wQtYraFw" general="_WriyoG5GEeioI6dcHPBwyA"/>
     <ownedOperation xmi:type="uml:Operation" xmi:id="_ZfadsHMCEei6M4wQtYraFw" name="name" visibility="public">
       <ownedParameter xmi:type="uml:Parameter" xmi:id="_eNFtwHMCEei6M4wQtYraFw" name=" " direction="out">
diff --git a/package-lock.json b/package-lock.json
index 8f18f8643fff9241a912d450a02046848397a627..b3e8de4956e08e90b74b26ca4f68c5e9970d83f3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -34,7 +34,7 @@
       "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
       "dev": true,
       "requires": {
-        "sprintf-js": "1.0.3"
+        "sprintf-js": "~1.0.2"
       }
     },
     "babel-code-frame": {
@@ -43,9 +43,9 @@
       "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
       "dev": true,
       "requires": {
-        "chalk": "1.1.3",
-        "esutils": "2.0.2",
-        "js-tokens": "3.0.2"
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
       },
       "dependencies": {
         "chalk": {
@@ -54,11 +54,11 @@
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
           "dev": true,
           "requires": {
-            "ansi-styles": "2.2.1",
-            "escape-string-regexp": "1.0.5",
-            "has-ansi": "2.0.0",
-            "strip-ansi": "3.0.1",
-            "supports-color": "2.0.0"
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
           }
         }
       }
@@ -75,7 +75,7 @@
       "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
       "dev": true,
       "requires": {
-        "balanced-match": "1.0.0",
+        "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
       }
     },
@@ -91,9 +91,9 @@
       "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
       "dev": true,
       "requires": {
-        "ansi-styles": "3.2.0",
-        "escape-string-regexp": "1.0.5",
-        "supports-color": "4.5.0"
+        "ansi-styles": "^3.1.0",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^4.0.0"
       },
       "dependencies": {
         "ansi-styles": {
@@ -102,7 +102,7 @@
           "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "supports-color": {
@@ -111,7 +111,7 @@
           "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
           "dev": true,
           "requires": {
-            "has-flag": "2.0.0"
+            "has-flag": "^2.0.0"
           }
         }
       }
@@ -128,7 +128,7 @@
       "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
       "dev": true,
       "requires": {
-        "color-name": "1.1.3"
+        "color-name": "^1.1.1"
       }
     },
     "color-name": {
@@ -185,12 +185,12 @@
       "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
       "dev": true,
       "requires": {
-        "fs.realpath": "1.0.0",
-        "inflight": "1.0.6",
-        "inherits": "2.0.3",
-        "minimatch": "3.0.4",
-        "once": "1.4.0",
-        "path-is-absolute": "1.0.1"
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
       }
     },
     "globule": {
@@ -199,9 +199,9 @@
       "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
       "dev": true,
       "requires": {
-        "glob": "7.1.2",
-        "lodash": "4.17.10",
-        "minimatch": "3.0.4"
+        "glob": "~7.1.1",
+        "lodash": "~4.17.10",
+        "minimatch": "~3.0.2"
       }
     },
     "has-ansi": {
@@ -210,7 +210,7 @@
       "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
       "dev": true,
       "requires": {
-        "ansi-regex": "2.1.1"
+        "ansi-regex": "^2.0.0"
       }
     },
     "has-flag": {
@@ -225,8 +225,8 @@
       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
       "dev": true,
       "requires": {
-        "once": "1.4.0",
-        "wrappy": "1.0.2"
+        "once": "^1.3.0",
+        "wrappy": "1"
       }
     },
     "inherits": {
@@ -241,8 +241,8 @@
       "integrity": "sha1-K9Wf1+xuwOistk4J9Fpo7SrRlSo=",
       "dev": true,
       "requires": {
-        "glob": "7.1.2",
-        "jasmine-core": "3.1.0"
+        "glob": "^7.0.6",
+        "jasmine-core": "~3.1.0"
       }
     },
     "jasmine-core": {
@@ -257,14 +257,14 @@
       "integrity": "sha512-W8ehdkjov8kaVEdGmqmfobuJk04NmYarfVKAl/HUeVsCxP+E25pcW+l6Y46yXMthjj+3Qi3gaWkC+LU8toqa2w==",
       "dev": true,
       "requires": {
-        "coffeescript": "2.3.1",
-        "gaze": "1.1.3",
-        "jasmine-growl-reporter": "1.0.1",
-        "jasmine-reporters": "1.0.2",
-        "mkdirp": "0.3.5",
-        "requirejs": "2.3.5",
-        "underscore": "1.8.3",
-        "walkdir": "0.0.12"
+        "coffeescript": ">=1.0.1",
+        "gaze": "~1.1.2",
+        "jasmine-growl-reporter": "~1.0.1",
+        "jasmine-reporters": "~1.0.0",
+        "mkdirp": "~0.3.5",
+        "requirejs": ">=0.27.1",
+        "underscore": ">= 1.3.1",
+        "walkdir": ">= 0.0.1"
       },
       "dependencies": {
         "gaze": {
@@ -273,7 +273,7 @@
           "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
           "dev": true,
           "requires": {
-            "globule": "1.2.1"
+            "globule": "^1.0.0"
           }
         },
         "growl": {
@@ -288,7 +288,7 @@
           "integrity": "sha512-dh7VjP3l0OLxL9+sw5vK6RrdH4gdHCNkTnUd9orViHDPr7Fe8LsXY+IObWauS2hX5khMFtjKRZCfTcDHKAjm/A==",
           "dev": true,
           "requires": {
-            "growl": "1.10.5"
+            "growl": "^1.10.2"
           }
         }
       }
@@ -299,7 +299,7 @@
       "integrity": "sha1-q2E+1Zd9x0h+hbPBL2qOqNsq3jE=",
       "dev": true,
       "requires": {
-        "mkdirp": "0.3.5"
+        "mkdirp": "~0.3.5"
       }
     },
     "js-tokens": {
@@ -314,8 +314,8 @@
       "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
       "dev": true,
       "requires": {
-        "argparse": "1.0.10",
-        "esprima": "4.0.1"
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
       }
     },
     "lodash": {
@@ -330,7 +330,7 @@
       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
       "dev": true,
       "requires": {
-        "brace-expansion": "1.1.8"
+        "brace-expansion": "^1.1.7"
       }
     },
     "mkdirp": {
@@ -345,7 +345,7 @@
       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
       "dev": true,
       "requires": {
-        "wrappy": "1.0.2"
+        "wrappy": "1"
       }
     },
     "path-is-absolute": {
@@ -372,7 +372,7 @@
       "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
       "dev": true,
       "requires": {
-        "path-parse": "1.0.5"
+        "path-parse": "^1.0.5"
       }
     },
     "semver": {
@@ -393,7 +393,7 @@
       "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
       "dev": true,
       "requires": {
-        "ansi-regex": "2.1.1"
+        "ansi-regex": "^2.0.0"
       }
     },
     "supports-color": {
@@ -414,18 +414,18 @@
       "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=",
       "dev": true,
       "requires": {
-        "babel-code-frame": "6.26.0",
-        "builtin-modules": "1.1.1",
-        "chalk": "2.3.0",
-        "commander": "2.12.2",
-        "diff": "3.4.0",
-        "glob": "7.1.2",
-        "js-yaml": "3.12.0",
-        "minimatch": "3.0.4",
-        "resolve": "1.5.0",
-        "semver": "5.4.1",
-        "tslib": "1.8.1",
-        "tsutils": "2.28.0"
+        "babel-code-frame": "^6.22.0",
+        "builtin-modules": "^1.1.1",
+        "chalk": "^2.3.0",
+        "commander": "^2.12.1",
+        "diff": "^3.2.0",
+        "glob": "^7.1.1",
+        "js-yaml": "^3.7.0",
+        "minimatch": "^3.0.4",
+        "resolve": "^1.3.2",
+        "semver": "^5.3.0",
+        "tslib": "^1.8.0",
+        "tsutils": "^2.27.2"
       },
       "dependencies": {
         "tsutils": {
@@ -434,7 +434,7 @@
           "integrity": "sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==",
           "dev": true,
           "requires": {
-            "tslib": "1.8.1"
+            "tslib": "^1.8.1"
           }
         }
       }
diff --git a/spec/iterator/named_iterable_value.spec.ts b/spec/iterator/named_iterable_value.spec.ts
index 2d2bd592072c7ead86fefa13dfb99517bfad3946..e8c3ac56bafbad846a7375060e585d6366203f5f 100644
--- a/spec/iterator/named_iterable_value.spec.ts
+++ b/spec/iterator/named_iterable_value.spec.ts
@@ -57,7 +57,7 @@ function testExtraResultsValues(vals: number[]): ExtraResults {
     return ers;
 }
 
-describe("NamedIterableValues  : ", () => {
+describe("INamedIterableValues  : ", () => {
     describe("BaseParam  : ", () => {
         it("test 1", () => {
             const name = "aa";
diff --git a/spec/iterator/paramvalues_iterator.spec.ts b/spec/iterator/paramvalues_iterator.spec.ts
index f4c9bf740bdeadf4f5bc7921eb82ec72aa3844ad..09589fbdc735c9f98a49b8b1dedbf60233641282 100644
--- a/spec/iterator/paramvalues_iterator.spec.ts
+++ b/spec/iterator/paramvalues_iterator.spec.ts
@@ -1,8 +1,8 @@
-import { NumberIterator } from "../../src/param/param-value-iterator";
+import { INumberIterator } from "../../src/param/param-value-iterator";
 import { ParamValueMode } from "../../src/param/param-value-mode";
 import { ParamValues } from "../../src/param/param-values";
 
-function checkNumberList(it: NumberIterator, exp: number[]) {
+function checkNumberList(it: INumberIterator, exp: number[]) {
     let n = 0;
     for (const v of it) {
         expect(v).toEqual(exp[n]);
diff --git a/src/base.ts b/src/base.ts
index 183cd2b7a99731f0b5082f521f165b4b16becd34..8ba6e9bb35b90f43bb22d16b7c0fa14698b5965b 100644
--- a/src/base.ts
+++ b/src/base.ts
@@ -26,6 +26,7 @@ export class Debug {
     public debug(...args: any[]) {
         // tslint:disable-next-line:no-console
         if (this._DBG) {
+            // tslint:disable-next-line:no-console
             console.log(...args);
         }
     }
diff --git a/src/jalhyd_object.ts b/src/jalhyd_object.ts
index 27edec4f5c51169f69896bae5345d4d7a99dd297..5c9fe62a53779af0d4e61fbc61b99f82eb4d77d3 100644
--- a/src/jalhyd_object.ts
+++ b/src/jalhyd_object.ts
@@ -23,8 +23,8 @@ export abstract class JalhydObject implements IJalhydObject {
      */
     private static _uidSequence: number = 0;
     /**
-    * id numérique unique
-    */
+     * id numérique unique
+     */
     private _uid: number;
 
     constructor() {
diff --git a/src/nub.ts b/src/nub.ts
index 1bdd69782e3c76e101160cedb721f7e4d1c36c0f..ff0d3582bbdf32620d86ebfd076a53cb905d5e85 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -2,7 +2,7 @@ import { ParamDefinition } from ".";
 import { Debug } from "./base";
 import { ComputeNode } from "./compute-node";
 import { Dichotomie } from "./dichotomie";
-import { IterableValues, NamedIterableValues, NumberIterator } from "./param/param-value-iterator";
+import { INamedIterableValues, INumberIterator, IterableValues } from "./param/param-value-iterator";
 import { ParamValueMode } from "./param/param-value-mode";
 import { ParamValues } from "./param/param-values";
 import { Result } from "./util/result";
@@ -188,12 +188,12 @@ export abstract class Nub extends ComputeNode implements IReferencedNub {
         return r.getExtraResult(tmp[1]);
     }
 
-    public getReferencedValuesIterator(desc: string): NumberIterator {
+    public getReferencedValuesIterator(desc: string): INumberIterator {
         const ro = this.getReferencedObject(desc);
         return ro.valuesIterator;
     }
 
-    public getReferencedObject(desc: string): NamedIterableValues {
+    public getReferencedObject(desc: string): INamedIterableValues {
         const tmp = desc.split(".");
 
         if (tmp.length === 1) {
@@ -217,7 +217,7 @@ export abstract class Nub extends ComputeNode implements IReferencedNub {
      * @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string
      * @param excludeResult true si on veut exclure des valeurs retournées le résultat/résultat complémentaire
      *                      correspondant à la clé de recherche
-     * @returns tableau d'objets de la forme { "name":string, "value":NamedIterableValues, "nub":Nub},
+     * @returns tableau d'objets de la forme { "name":string, "value":INamedIterableValues, "nub":Nub},
      *   nub=Nub d'origine de la "value"
      *
      *   l'étiquette "name" (cf. INubReference.defineReference) est de la forme <n | ouvrage[n] | N1>[.[N2]]
@@ -300,7 +300,7 @@ export abstract class Nub extends ComputeNode implements IReferencedNub {
         return prefix === undefined ? str : `${prefix}${str}`;
     }
 
-    private setVariatedValues(newValues: NamedIterableValues, oldValues: IterableValues) {
+    private setVariatedValues(newValues: INamedIterableValues, oldValues: IterableValues) {
         if (oldValues === undefined) {
             return newValues;
         } else {
diff --git a/src/param/param-base.ts b/src/param/param-base.ts
index b4b6024457e97110d34af5e379531ce4ab80565f..d847fd33dfda79fe787648be5e17d56a54208850 100644
--- a/src/param/param-base.ts
+++ b/src/param/param-base.ts
@@ -6,7 +6,7 @@ import { IObservable, Observable, Observer } from "../util/observer";
 import { Result } from "../util/result";
 import { INubReference, IReferencedNub } from "../value_ref/object_ref";
 import { ParamDomain, ParamDomainValue } from "./param-domain";
-import { NamedIterableValues, NumberIterator } from "./param-value-iterator";
+import { INamedIterableValues, INumberIterator } from "./param-value-iterator";
 import { ParamValueMode } from "./param-value-mode";
 import { ParamValues } from "./param-values";
 
@@ -14,7 +14,7 @@ import { ParamValues } from "./param-values";
  * paramètre avec symbole et domaine de définition
  */
 // tslint:disable-next-line:max-classes-per-file
-export class BaseParam extends JalhydObject implements INubReference, NamedIterableValues, IObservable {
+export class BaseParam extends JalhydObject implements INubReference, INamedIterableValues, IObservable {
     /**
      * symbole
      */
@@ -280,17 +280,17 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
         return this._paramValues.referencedExtraResult;
     }
 
-    get referencedValuesIterator(): NumberIterator {
+    get referencedValuesIterator(): INumberIterator {
         return this._paramValues.referencedValuesIterator;
     }
 
-    get referencedObject(): NamedIterableValues {
+    get referencedObject(): INamedIterableValues {
         return this._paramValues.referencedObject;
     }
 
-    // interface NamedIterableValues
+    // interface INamedIterableValues
 
-    public get valuesIterator(): NumberIterator {
+    public get valuesIterator(): INumberIterator {
         if (this.isReferenceDefined) {
             return this.referencedValuesIterator;
         }
@@ -305,7 +305,7 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
         return this._symbol;
     }
 
-    public initValuesIterator(reverse: boolean = false): NumberIterator {
+    public initValuesIterator(reverse: boolean = false): INumberIterator {
         return this._paramValues.initValuesIterator(reverse);
     }
 
diff --git a/src/param/param-value-iterator.ts b/src/param/param-value-iterator.ts
index 82a03fe616d037b8ddc3f72e2f3f9bcbcc3526a0..14b2c6756751e336bd286da27eea8ce31a22e3f7 100644
--- a/src/param/param-value-iterator.ts
+++ b/src/param/param-value-iterator.ts
@@ -6,7 +6,7 @@ import { ParamValues } from "./param-values";
 /**
  * itérateur sur des nombres
  */
-export interface NumberIterator extends IterableIterator<number> {
+export interface INumberIterator extends IterableIterator<number> {
     /**
      * @return true si il reste des valeurs à parcourir
      */
@@ -27,11 +27,11 @@ export interface NumberIterator extends IterableIterator<number> {
 /**
  * interface implémentée par les objets pouvant posséder/renvoyer un itérateur sur une série de valeurs numériques
  */
-export interface IterableValues extends NumberIterator {
+export interface IterableValues extends INumberIterator {
     /**
      * crée un nouvel itérateur sur les valeurs
      */
-    readonly valuesIterator: NumberIterator;
+    readonly valuesIterator: INumberIterator;
 
     /**
      * true si la série de valeurs a plus d'une valeur
@@ -41,19 +41,19 @@ export interface IterableValues extends NumberIterator {
     /**
      * initialise un itérateur interne sur les valeurs implicitement utilisé par hasNext() et next()
      */
-    initValuesIterator(reverse: boolean): NumberIterator;
+    initValuesIterator(reverse: boolean): INumberIterator;
 }
 
 /**
  * objets pouvant ayant un nom et un itérateur sur une série de valeurs numériques
  */
-export interface NamedIterableValues extends INamedObject, IterableValues {
+export interface INamedIterableValues extends INamedObject, IterableValues {
 }
 
 /**
  * itérateur sur les (ou la) valeurs prises par un ParamValues
  */
-export class ParamValueIterator implements NumberIterator {
+export class ParamValueIterator implements INumberIterator {
     /**
      * paramètre à itérer
      */
@@ -109,6 +109,7 @@ export class ParamValueIterator implements NumberIterator {
                 break;
 
             default:
+                // tslint:disable-next-line:max-line-length
                 throw new Error(`ParamValueIterator : mode de génération de valeurs ${ParamValueMode[this._param.valueMode]} incorrect`);
         }
     }
@@ -206,7 +207,8 @@ export class ParamValueIterator implements NumberIterator {
 /**
  * itérateur sur les valeurs prises par un tableau
  */
-export class NumberArrayIterator implements NumberIterator {
+// tslint:disable-next-line:max-classes-per-file
+export class NumberArrayIterator implements INumberIterator {
     private _it: IterableIterator<number>;
 
     private _index: number;
@@ -248,7 +250,8 @@ export class NumberArrayIterator implements NumberIterator {
 /**
  * itérateur sur les valeurs prises par un tableau (parcourues depuis la fin)
  */
-export class NumberArrayReverseIterator extends ArrayReverseIterator<number> implements NumberIterator {
+// tslint:disable-next-line:max-classes-per-file
+export class NumberArrayReverseIterator extends ArrayReverseIterator<number> implements INumberIterator {
     private _count: number;
 
     /**
diff --git a/src/param/param-values.ts b/src/param/param-values.ts
index 81f1835b278a7ad7e316ca3f952445d7c48002d7..7fe5049d89ef9d750eddc9c6f9ea186837b16f47 100644
--- a/src/param/param-values.ts
+++ b/src/param/param-values.ts
@@ -2,7 +2,7 @@ import { Result } from "..";
 import { DefinedNumber } from "../util/definedvalue";
 import { Pair } from "../util/pair";
 import { INubReference, IReferencedNub, NubReference } from "../value_ref/object_ref";
-import { IterableValues, NamedIterableValues, NumberIterator, ParamValueIterator } from "./param-value-iterator";
+import { INamedIterableValues, INumberIterator, IterableValues, ParamValueIterator } from "./param-value-iterator";
 import { ParamValueMode } from "./param-value-mode";
 
 export class ParamValues implements INubReference, IterableValues {
@@ -50,7 +50,7 @@ export class ParamValues implements INubReference, IterableValues {
     /**
      * itérateur courant
      */
-    private _iterator: NumberIterator;
+    private _iterator: INumberIterator;
 
     constructor() {
         this._singleValue = new DefinedNumber();
@@ -240,7 +240,7 @@ export class ParamValues implements INubReference, IterableValues {
      * crée un ParamValueIterator
      * @param reverse true si on veut itérer max->min ou depuis la fin de la liste
      */
-    public getValuesIterator(reverse: boolean = false): NumberIterator {
+    public getValuesIterator(reverse: boolean = false): INumberIterator {
         return new ParamValueIterator(this, reverse);
     }
 
@@ -283,7 +283,7 @@ export class ParamValues implements INubReference, IterableValues {
         return this._nubRef.referencedValuesIterator;
     }
 
-    public get referencedObject(): NamedIterableValues {
+    public get referencedObject(): INamedIterableValues {
         if (this.isReferenceDefined) {
             return this._nubRef.referencedObject;
         }
@@ -292,7 +292,7 @@ export class ParamValues implements INubReference, IterableValues {
 
     // interface IterableValues
 
-    public get valuesIterator(): NumberIterator {
+    public get valuesIterator(): INumberIterator {
         return this.getValuesIterator();
     }
 
@@ -321,7 +321,7 @@ export class ParamValues implements INubReference, IterableValues {
         return n > 1;
     }
 
-    public initValuesIterator(reverse: boolean = false): NumberIterator {
+    public initValuesIterator(reverse: boolean = false): INumberIterator {
         switch (this._valueMode) {
             case ParamValueMode.LISTE:
             case ParamValueMode.MINMAX:
diff --git a/src/param/params-equation.ts b/src/param/params-equation.ts
index eb18b13a4b3ca7b588b41e327109ee7b7ebdf46c..ff7d1e6d98cb526c7aba7e9cbe4ff8639b1f4b9f 100644
--- a/src/param/params-equation.ts
+++ b/src/param/params-equation.ts
@@ -47,7 +47,7 @@ export class ParamsEquationArrayIterator implements IParamDefinitionIterator {
     }
 
     public next(): IteratorResult<ParamDefinition> {
-        if (this._currentMapIterator == undefined) {
+        if (this._currentMapIterator === undefined) {
             this.nextIterator();
         }
 
diff --git a/src/regime_uniforme.ts b/src/regime_uniforme.ts
index 787b318e53e75d45e3ebad9cf3ee156dc59a7b98..d4d003a914ae54b929baf8eda3ee6bdfe339021c 100644
--- a/src/regime_uniforme.ts
+++ b/src/regime_uniforme.ts
@@ -4,6 +4,7 @@ import { acSection, ParamsSection } from "./section/section_type";
 import { Result } from "./util/result";
 
 export class RegimeUniforme extends Nub {
+    // tslint:disable-next-line:variable-name
     private Sn: acSection;
 
     constructor(s: acSection, dbg: boolean = false) {
diff --git a/src/remous.ts b/src/remous.ts
index 23dc656d3f29567f0e0a3e23d8ce10bc31d97ad7..c05908655c8f7c99b6c5fc6867e6a31d038c7305 100644
--- a/src/remous.ts
+++ b/src/remous.ts
@@ -1,4 +1,4 @@
-import { BaseParam, ParamValues } from ".";
+import { ParamValues } from ".";
 import { round, XOR } from "./base";
 import { Dichotomie } from "./dichotomie";
 import { Nub } from "./nub";
@@ -6,7 +6,6 @@ import { ParamCalculability, ParamDefinition } from "./param/param-definition";
 import { ParamDomainValue } from "./param/param-domain";
 import { ParamsEquation } from "./param/params-equation";
 import { acSection, ParamsSection } from "./section/section_type";
-import { cLog } from "./util/log";
 import { Message, MessageCode } from "./util/message";
 import { Result } from "./util/result";
 import { ResultElement } from "./util/resultelement";
@@ -105,6 +104,7 @@ export class CourbeRemous extends Nub {
 
     private _debugDicho: boolean = false;
 
+    // tslint:disable-next-line:variable-name
     private Dx: number;
 
     /**
@@ -122,9 +122,9 @@ export class CourbeRemous extends Nub {
     }
 
     /**
-     * @param val_a_cal nom de la variable à calculer
+     * @param valACal nom de la variable à calculer
      */
-    public calculRemous(val_a_cal: string):
+    public calculRemous(valACal: string):
         // {
         // "flu": { [key: number]: number; },
         // "tor": { [key: number]: number; },
@@ -140,6 +140,7 @@ export class CourbeRemous extends Nub {
             res.addLog(rYC.log);
             return res;
         }
+        // tslint:disable-next-line:variable-name
         const Yc: number = rYC.vCalc;
 
         const rB: Result = this.Sn.Calc("B", this.Sn.prms.YB.v);
@@ -165,6 +166,7 @@ export class CourbeRemous extends Nub {
             return res;
         }
 
+        // tslint:disable-next-line:variable-name
         const Yn = rYN.vCalc;
         m = new Message(MessageCode.INFO_REMOUS_H_NORMALE);
         m.extraVar.Yn = Yn;
@@ -292,8 +294,10 @@ export class CourbeRemous extends Nub {
             // this.debug(trX);
 
             let bRessaut = false;
+            // tslint:disable-next-line:variable-name
             const Dx = xValues.step;
 
+            // tslint:disable-next-line:prefer-for-of
             for (let irX = 0; irX < trX.length; irX++) {
                 const rX: number = +trX[irX];
                 // this.debug("irX=" + irX);
@@ -306,6 +310,7 @@ export class CourbeRemous extends Nub {
                     res.addLog(rYCO.log);
                     return res;
                 }
+                // tslint:disable-next-line:variable-name
                 const Yco = rYCO.vCalc;
                 // this.debug("rX=" + rX + " Yco(Ypartiel=" + crbPartielle[rX] + ")=" + Yco);
 
@@ -329,7 +334,7 @@ export class CourbeRemous extends Nub {
 
                 if (crbComplete[xRst] !== undefined) {
                     // Hauteur décalée de la longueur du ressaut (il faut gérer la pente du fond)
-                    const Ydec: number = crbComplete[xRst] + rLongRst * this.prmSect.If.v * iSens;
+                    // const Ydec: number = crbComplete[xRst] + rLongRst * this.prmSect.If.v * iSens;
                     // this.debug("Ydec=" + Ydec);
                     const impYcomplete = this.Sn.Calc("Imp", crbComplete[xRst]);
                     // this.debug("imp(Ycomplet[xRst=" + xRst + "]=" + crbComplete[xRst] + ")=" + impYcomplete);
@@ -460,16 +465,15 @@ export class CourbeRemous extends Nub {
         // Calcul de la variable à calculer
 
         const tRes: { [key: number]: number } = {};
-        if (val_a_cal) {
+        if (valACal) {
             for (const re of res.resultElements) {
                 const rY = re.vCalc;
                 if (rY !== undefined) {
-                    const rVar = this.Sn.Calc(val_a_cal, rY);
+                    const rVar = this.Sn.Calc(valACal, rY);
                     if (!rVar.ok) {
-                        res.addLog(rVar.log);
-                    }
-                    else {
-                        re.addExtraResult(val_a_cal, rVar.vCalc);
+                        res.addLog(rVar.log);
+                    } else {
+                        re.addExtraResult(valACal, rVar.vCalc);
                     }
                 }
             }
@@ -696,6 +700,7 @@ export class CourbeRemous extends Nub {
         }
         const k4 = rDXDY4.vCalc;
 
+        // tslint:disable-next-line:variable-name
         const Yout = Y + rDx / 6 * (k1 + 2 * (k2 + k3) + k4);
 
         // if ($this ->rDx > 0 xor !($Yout < $this ->oSect ->rHautCritique)) { return false; }
@@ -778,6 +783,7 @@ export class CourbeRemous extends Nub {
     private size(o: {}): number {
         let res: number = 0;
 
+        // tslint:disable-next-line:forin
         for (const i in o) {
             res++;
         }
@@ -788,6 +794,7 @@ export class CourbeRemous extends Nub {
     private last(o: any): any {
         let res: any;
 
+        // tslint:disable-next-line:forin
         for (const i in o) {
             res = o[i];
         }
diff --git a/src/section/hauteur.ts b/src/section/hauteur.ts
index 0f795923862fbbe25b7b785b23bf7f2f5fb16015..82460e20d35852cdfd7a5d4c835e7aa410af105f 100644
--- a/src/section/hauteur.ts
+++ b/src/section/hauteur.ts
@@ -1,4 +1,3 @@
-import { Debug } from "../base";
 import { Message, MessageCode } from "../util/message";
 import { Result } from "../util/result";
 import { acNewton } from "./newton";
@@ -7,16 +6,19 @@ import { acSection, cParamsCanal } from "./section_type";
 /**
  * Calcul de la hauteur critique
  */
+// tslint:disable-next-line:class-name
 export class cHautCritique extends acNewton {
         /**
          * Section sur laquuelle porte le calcul
          */
+        // tslint:disable-next-line:variable-name
         private Sn: acSection;
 
         /**
          * Constructeur de la classe
          * @param Sn Section sur laquelle on fait le calcul
          */
+        // tslint:disable-next-line:variable-name
         constructor(Sn: acSection, maxIter: number, dbg: boolean = false) {
                 super(Sn.prms, maxIter, dbg);
                 this.Sn = Sn.clone();
@@ -34,10 +36,11 @@ export class cHautCritique extends acNewton {
 
                 // Calcul de la fonction
                 // if (this.Sn.Calc("S", rX) != 0)
-                if (rS.vCalc == 0) {
+                if (rS.vCalc === 0) {
                         return new Result(new Message(MessageCode.ERROR_SECTION_SURFACE_NULLE));
                 }
 
+                // tslint:disable-next-line:max-line-length
                 // return (Math.pow(this.Sn.prms.Q.v, 2) * this.Sn.Calc("B", rX) / Math.pow(this.Sn.Calc("S", rX), 3) / cParamsCanal.G - 1);
                 const rB: Result = this.Sn.Calc("B", rX);
                 if (!rB.ok) {
@@ -67,7 +70,7 @@ export class cHautCritique extends acNewton {
                 }
                 const S = rS.vCalc;
                 // if (S != 0) {
-                if (S == 0) {
+                if (S === 0) {
                         return new Result(new Message(MessageCode.ERROR_SECTION_SURFACE_NULLE));
                 }
 
@@ -85,6 +88,7 @@ export class cHautCritique extends acNewton {
 
                 // L'initialisation à partir de rX a été faite lors de l'appel à CalcFn
                 // let Der = (this.Sn.Calc("dB") * S - 3 * B * B);
+                // tslint:disable-next-line:variable-name
                 const Der = (rDB.vCalc * S - 3 * B * B);
                 const v = Math.pow(this.Sn.prms.Q.v, 2) / cParamsCanal.G * Der / Math.pow(S, 4);
                 return new Result(v);
@@ -97,10 +101,12 @@ export class cHautCritique extends acNewton {
 /**
  * Calcul de la hauteur normale
  */
+// tslint:disable-next-line:max-classes-per-file class-name
 export class cHautNormale extends acNewton {
         /**
-       * Section sur laquuelle porte le calcul
-       */
+         * Section sur laquuelle porte le calcul
+         */
+        // tslint:disable-next-line:variable-name
         private Sn: acSection;
 
         /**
@@ -111,17 +117,20 @@ export class cHautNormale extends acNewton {
         /**
          * Coefficient de Strickler
          */
+        // tslint:disable-next-line:variable-name
         private Ks: number;
 
         /**
          * Pente du fond
          */
+        // tslint:disable-next-line:variable-name
         private If: number;
 
         /**
          * Constructeur de la classe
          * @param oSn Section sur laquelle on fait le calcul
          */
+        // tslint:disable-next-line:variable-name
         constructor(Sn: acSection, maxIter: number, dbg: boolean = false) {
                 super(Sn.prms, maxIter, dbg);
                 this.Sn = Sn;
@@ -136,6 +145,7 @@ export class cHautNormale extends acNewton {
          */
         public CalcFn(rX: number): Result {
                 // Calcul de la fonction
+                // tslint:disable-next-line:max-line-length
                 // return (this.Q - this.Ks * Math.pow(this.Sn.Calc("R", rX), 2 / 3) * this.Sn.Calc("S", rX) * Math.sqrt(this.If));
                 const rR: Result = this.Sn.Calc("R", rX);
                 if (!rR.ok) {
@@ -174,6 +184,7 @@ export class cHautNormale extends acNewton {
                 // L'initialisation a été faite lors de l'appel à CalcFn
 
                 // let Der = 2 / 3 * this.Sn.Calc("dR") * Math.pow(this.Sn.Calc("R"), -1 / 3) * this.Sn.Calc("S");
+                // tslint:disable-next-line:variable-name
                 let Der = 2 / 3 * rDR.vCalc * Math.pow(rR.vCalc, -1 / 3) * rS.vCalc;
 
                 const rR2: Result = this.Sn.Calc("R");
@@ -197,6 +208,7 @@ export class cHautNormale extends acNewton {
 /**
  * Calcul de la hauteur correspondante (charge égale)
  */
+// tslint:disable-next-line:max-classes-per-file class-name
 export class cHautCorrespondante extends acNewton {
         /**
          * Tirant d'eau connu
@@ -211,6 +223,7 @@ export class cHautCorrespondante extends acNewton {
         /**
          * Section contenant les données de la section avec la hauteur à calculer
          */
+        // tslint:disable-next-line:variable-name
         private Sn: acSection;
 
         /**
@@ -222,17 +235,18 @@ export class cHautCorrespondante extends acNewton {
          * Constructeur de la classe
          * @param oSn Section sur laquelle on fait le calcul
          */
+        // tslint:disable-next-line:variable-name
         constructor(Sn: acSection, maxIter: number, dbg: boolean = false) {
                 super(Sn.prms, maxIter, dbg);
                 this.Y = Sn.prms.Y.v;
                 //                this.rS2 = Math.pow(Sn.Calc("S"), -2);
                 this.Sn = Sn;
-                this.rS2;  // pour initialiser la valeur
+                this.rS2;  // pour initialiser la valeur @WTF (utilise le getter)
                 this.rQ2G = Math.pow(Sn.prms.Q.v, 2) / (2 * cParamsCanal.G);
         }
 
         private get rS2(): Result {
-                if (this._rS2 == undefined) {
+                if (this._rS2 === undefined) {
                         const rS = this.Sn.Calc("S");
                         if (rS.ok) {
                                 const v = Math.pow(rS.vCalc, -2);
@@ -278,7 +292,7 @@ export class cHautCorrespondante extends acNewton {
 
                 // L'initialisation a été faite lors de l'appel à CalcFn
                 // if (S != 0)
-                if (S == 0) {
+                if (S === 0) {
                         return new Result(new Message(MessageCode.ERROR_SECTION_SURFACE_NULLE));
                 }
 
@@ -298,8 +312,10 @@ export class cHautCorrespondante extends acNewton {
 /**
  * Calcul de la hauteur conjuguée (Impulsion égale)
  */
+// tslint:disable-next-line:max-classes-per-file class-name
 export class cHautConjuguee extends acNewton {
         /** Section contenant les données de la section avec la hauteur à calculer */
+        // tslint:disable-next-line:variable-name
         private Sn: acSection;
 
         /** Carré du débit */
@@ -350,6 +366,7 @@ export class cHautConjuguee extends acNewton {
                                 return rS3;
                         }
 
+                        // tslint:disable-next-line:variable-name
                         const Fn = this.rQ2 * (1 / this.rS.vCalc - 1 / rS3.vCalc);
 
                         const rSYg = this.Sn.Calc("SYg");
@@ -391,6 +408,7 @@ export class cHautConjuguee extends acNewton {
                         }
 
                         // let Der = this.rQ2 * this.Sn.Calc("dS") * Math.pow(S, -2);
+                        // tslint:disable-next-line:variable-name
                         const Der = this.rQ2 * rDS.vCalc * Math.pow(S, -2);
 
                         const rDYG: Result = this.Sn.Calc("dSYg", rX);
diff --git a/src/section/newton.ts b/src/section/newton.ts
index 0d5916468577894d896365ac2448a31d4ebf0338..498bef41807075bf059259afb20ce963b3498628 100644
--- a/src/section/newton.ts
+++ b/src/section/newton.ts
@@ -4,8 +4,10 @@ import { Result } from "../util/result";
 import { ResultElement } from "../util/resultelement";
 import { cParamsCanal } from "./section_type";
 
+// tslint:disable-next-line:class-name
 export abstract class acNewton extends Debug {
         protected rTol: number;
+        // tslint:disable-next-line:variable-name
         protected Dx: number;
         private iCpt: number;
         private iCptMax: number;
@@ -87,8 +89,8 @@ export abstract class acNewton extends Debug {
                 }
 
                 if (this.iCpt >= this.iCptMax) {  // non convergence
-                        const m = new Message(MessageCode.ERROR_NEWTON_NON_CONVERGENCE);
-                        const res = new ResultElement(m);
+                        const mess = new Message(MessageCode.ERROR_NEWTON_NON_CONVERGENCE);
+                        const res = new ResultElement(mess);
                         res.addExtraResult("res", rX);
                         return new Result(res);
                 }
@@ -99,7 +101,7 @@ export abstract class acNewton extends Debug {
                 }
 
                 const rDer = rDER.vCalc;
-                if (rDer != 0) {
+                if (rDer !== 0) {
                         if (XOR(rFn < 0, this.rFnPrec < 0)) {
                                 this.iOscil++;
                                 if (this.rRelax > 1) {
@@ -112,6 +114,7 @@ export abstract class acNewton extends Debug {
                                 }
                         }
                         this.rFnPrec = rFn;
+                        // tslint:disable-next-line:variable-name
                         const Delta = rFn / rDer;
                         // 2^8 = 2E8 ?
                         while (Math.abs(Delta * this.rRelax) < this.rTol && rFn > 10 * this.rTol && this.rRelax < 2E8) {
diff --git a/src/section/section_circulaire.ts b/src/section/section_circulaire.ts
index 6dea4598b0a6fe5f879b78a8c1a9b82b5ca3afa5..f165d3d535c14948c827048a8a7c40f2f8a53cfb 100644
--- a/src/section/section_circulaire.ts
+++ b/src/section/section_circulaire.ts
@@ -1,4 +1,3 @@
-import { randomBytes } from "crypto";
 import { ParamCalculability, ParamDefinition } from "../param/param-definition";
 import { ParamDomainValue } from "../param/param-domain";
 import { Message, MessageCode } from "../util/message";
@@ -16,8 +15,8 @@ export class ParamsSectionCirc extends ParamsSection {
         }
 
         /**
-        * Diamètre du cercle
-        */
+         * Diamètre du cercle
+         */
         get D(): ParamDefinition {
                 return this._D;
         }
@@ -26,6 +25,7 @@ export class ParamsSectionCirc extends ParamsSection {
 /**
  * Calculs de la section circulaire
  */
+// tslint:disable-next-line:max-classes-per-file class-name
 export class cSnCirc extends acSection {
 
         get prms(): ParamsSectionCirc {
@@ -35,7 +35,8 @@ export class cSnCirc extends acSection {
 
         constructor(prms: ParamsSectionCirc, dbg: boolean = false) {
                 super(prms, dbg);
-                // commenté car si D est la variable à déterminer, il peut valoir n'importe quoi... if (prms.YB.v > D) { prms.YB.v = D; } // On place la berge au sommet du cercle
+                // commenté car si D est la variable à déterminer, il peut valoir n'importe
+                // quoi... if (prms.YB.v > D) { prms.YB.v = D; } // On place la berge au sommet du cercle
 
                 // if (this.prms.D.isDefined() && this.prms.YB.isDefined())
                 //         this.CalcGeo('B');
@@ -108,6 +109,7 @@ export class cSnCirc extends acSection {
          * @return B
          */
         protected Calc_P(): Result {
+                let v;
                 if (!this.bSnFermee && this.isDebordement()) {
                         // On n'ajoute pas le périmètre dans le cas d'une fente de Preissmann
                         // return this.CalcGeo("P") + super.Calc_P_Debordement(this.valeurYDebordement());
@@ -122,7 +124,7 @@ export class cSnCirc extends acSection {
                                 return rPDeb;
                         }
 
-                        const v = rGeoP.vCalc + rPDeb.vCalc;
+                        v = rGeoP.vCalc + rPDeb.vCalc;
                         return new Result(v);
                 }
 
@@ -131,7 +133,7 @@ export class cSnCirc extends acSection {
                         return rAlpha;
                 }
 
-                const v = this.prms.D.v * rAlpha.vCalc;
+                v = this.prms.D.v * rAlpha.vCalc;
                 return new Result(v);
         }
 
@@ -140,6 +142,7 @@ export class cSnCirc extends acSection {
          * @return S
          */
         protected Calc_S(): Result {
+                let v;
                 if (!this.bSnFermee && this.isDebordement()) {
                         // return this.CalcGeo("S") + super.Calc_S_Debordement(this.valeurYDebordement());
                         const rGeoS: Result = this.CalcGeo("S");
@@ -152,7 +155,7 @@ export class cSnCirc extends acSection {
                                 return rSDeb;
                         }
 
-                        const v = rGeoS.vCalc + rSDeb.vCalc;
+                        v = rGeoS.vCalc + rSDeb.vCalc;
                         return new Result(v);
                 }
 
@@ -163,7 +166,7 @@ export class cSnCirc extends acSection {
 
                 // return Math.pow(this.prms.D.v, 2) / 4 * (alpha - Math.sin(alpha) * Math.cos(alpha));
                 const alpha = rAlpha.vCalc;
-                const v = Math.pow(this.prms.D.v, 2) / 4 * (alpha - Math.sin(alpha) * Math.cos(alpha));
+                v = Math.pow(this.prms.D.v, 2) / 4 * (alpha - Math.sin(alpha) * Math.cos(alpha));
                 return new Result(v);
         }
 
@@ -221,6 +224,7 @@ export class cSnCirc extends acSection {
 
                 const alpha = rAlpha.vCalc;
 
+                // tslint:disable-next-line:variable-name
                 let SYg = Math.sin(alpha) - Math.pow(Math.sin(alpha), 3) / 3 - alpha * Math.cos(alpha);
                 SYg = Math.pow(this.prms.D.v, 3) / 8 * SYg;
                 return new Result(SYg);
@@ -247,6 +251,7 @@ export class cSnCirc extends acSection {
 
                 const cos = Math.cos(alpha);
                 const sin = Math.sin(alpha);
+                // tslint:disable-next-line:variable-name
                 let SYg = dAlpha * cos;
                 SYg += - dAlpha * cos * Math.pow(sin, 2);
                 SYg += - dAlpha * cos + alpha * dAlpha * sin;
@@ -260,7 +265,8 @@ export class cSnCirc extends acSection {
          * au cas où le canal soit "enterré" (côte de berge > diamètre)
          */
         private valeurYDebordement(): number {
-                return this.prms.Y.v - Math.min(this.prms.YB.v, this.prms.D.v); // >= 0 par définition, et toujours vrai car utilisé après test isDebordement()
+                return this.prms.Y.v - Math.min(this.prms.YB.v, this.prms.D.v);
+                // >= 0 par définition, et toujours vrai car utilisé après test isDebordement()
         }
 
         /**
diff --git a/src/section/section_nub.ts b/src/section/section_nub.ts
index 4d9317338ad46cb78fc669e25390f8716dd1083b..478b00495ee18edd4c70803eb6b3152e43f10d0e 100644
--- a/src/section/section_nub.ts
+++ b/src/section/section_nub.ts
@@ -228,8 +228,7 @@ export class SectionParametree extends Nub {
         const r: Result = this._section.Calc(varCalc, Y);
         if (r.ok) {
             re.addExtraResult(varCalc, r.vCalc);
-        }
-        else {
+        } else {
             re.log.addLog(r.log);
         }
     }
diff --git a/src/section/section_puissance.ts b/src/section/section_puissance.ts
index 1f0f66fb3327f9385a58cb92148065acc05544a1..1e1a285b7f0c2eb1269b4216fb0dafebe61e56ec 100644
--- a/src/section/section_puissance.ts
+++ b/src/section/section_puissance.ts
@@ -9,7 +9,9 @@ import { acSection, ParamsSection } from "./section_type";
 export class ParamsSectionPuiss extends ParamsSection {
         private _k: ParamDefinition; // Coefficient de forme compris entre 0 et 1
 
-        constructor(rk: number, rY: number, rLargeurBerge: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number) {
+        constructor(rk: number, rY: number, rLargeurBerge: number, rKs: number, rQ: number,
+                    rIf: number, rPrec: number, rYB: number) {
+
                 super(rY, rLargeurBerge, rKs, rQ, rIf, rPrec, rYB);
                 this._k = new ParamDefinition("k", new ParamDomain(ParamDomainValue.INTERVAL, 0, 1), rk);
 
@@ -17,8 +19,8 @@ export class ParamsSectionPuiss extends ParamsSection {
         }
 
         /**
-        * Coefficient de forme compris entre 0 et 1
-        */
+         * Coefficient de forme compris entre 0 et 1
+         */
         get k(): ParamDefinition {
                 return this._k;
         }
@@ -27,6 +29,7 @@ export class ParamsSectionPuiss extends ParamsSection {
 /**
  * Calculs de la section parabolique ou "puissance"
  */
+// tslint:disable-next-line:max-classes-per-file class-name
 export class cSnPuiss extends acSection {
         protected nbDessinPoints = 50;
 
@@ -81,10 +84,13 @@ export class cSnPuiss extends acSection {
                 }
 
                 const n = 100; /// Le nombre de partie pour le calcul de l'intégrale
+                // tslint:disable-next-line:variable-name
                 const Lambda2 = Math.pow(rAlpha.vCalc, 2);
                 let P = 0; /// Le périmètre à calculer
+                // tslint:disable-next-line:variable-name
                 let Previous = 0;
                 for (let i = 1; i <= n; i++) {
+                        // tslint:disable-next-line:variable-name
                         const Current = Math.pow(this.prms.Y.v * i / n, this.prms.k.v) / 2;
                         P += Math.sqrt(Math.pow(n, -2) + Lambda2 * Math.pow(Current - Previous, 2));
                         Previous = Current;
@@ -172,6 +178,7 @@ export class cSnPuiss extends acSection {
 
                 const k = this.prms.k.v;
                 const Y = this.prms.Y.v;
+                // tslint:disable-next-line:variable-name
                 const SYg = rDAlpha.vCalc * Math.pow(Y, k + 2) + rAlpha.vCalc * Math.pow(Y, k + 1) * (k + 2);
                 const v = SYg / ((k + 1) * (k + 2));
                 return new Result(v);
diff --git a/src/section/section_rectang.ts b/src/section/section_rectang.ts
index aad38bc5ede2be91cf35f1215fac13a3bc78e603..5207edffa7fccaa868b8fb11b8f2fd7e0230b1c9 100644
--- a/src/section/section_rectang.ts
+++ b/src/section/section_rectang.ts
@@ -2,7 +2,9 @@ import { Result } from "../util/result";
 import { acSection, ParamsSection } from "./section_type";
 
 export class ParamsSectionRectang extends ParamsSection {
-        constructor(rY: number, rLargeurFond: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number) {
+        constructor(rY: number, rLargeurFond: number, rKs: number, rQ: number, rIf: number,
+                    rPrec: number, rYB: number) {
+
                 super(rY,
                         rLargeurFond, // LargeurBerge=LargeurFond
                         rKs, rQ, rIf, rPrec, rYB);
@@ -12,6 +14,7 @@ export class ParamsSectionRectang extends ParamsSection {
 /**
  * Calculs de la section rectangulaire
  */
+// tslint:disable-next-line:max-classes-per-file class-name
 export class cSnRectang extends acSection {
         constructor(prms: ParamsSectionRectang, dbg: boolean = false) {
                 super(prms, dbg);
diff --git a/src/section/section_trapez.ts b/src/section/section_trapez.ts
index 554e495a41fbb403cd1b077e140c6988a7d37a72..8da343f23d4b57cd897f43c3688ddec3137e2c7a 100644
--- a/src/section/section_trapez.ts
+++ b/src/section/section_trapez.ts
@@ -7,7 +7,9 @@ export class ParamsSectionTrapez extends ParamsSection {
         private _LargeurFond: ParamDefinition; // Largeur au fond
         private _Fruit: ParamDefinition; // Fruit des berges
 
-        constructor(rLargeurFond: number, rFruit: number, rY: number, rKs: number, rQ: number, rIf: number, rPrec: number, rYB: number) {
+        constructor(rLargeurFond: number, rFruit: number, rY: number, rKs: number,
+                    rQ: number, rIf: number, rPrec: number, rYB: number) {
+
                 super(rY, undefined, rKs, rQ, rIf, rPrec, rYB);
                 this._LargeurFond = new ParamDefinition("LargeurFond", ParamDomainValue.POS_NULL, rLargeurFond);
                 this._Fruit = new ParamDefinition("Fruit", ParamDomainValue.POS_NULL, rFruit);
@@ -17,15 +19,15 @@ export class ParamsSectionTrapez extends ParamsSection {
         }
 
         /**
-        * Largeur au fond
-        */
+         * Largeur au fond
+         */
         get LargeurFond(): ParamDefinition {
                 return this._LargeurFond;
         }
 
         /**
-        * Fruit des berges
-        */
+         * Fruit des berges
+         */
         get Fruit(): ParamDefinition {
                 return this._Fruit;
         }
@@ -34,6 +36,7 @@ export class ParamsSectionTrapez extends ParamsSection {
 /**
  * Calculs de la section trapézoïdale
  */
+// tslint:disable-next-line:max-classes-per-file class-name
 export class cSnTrapez extends acSection {
 
         get prms(): ParamsSectionTrapez {
@@ -50,12 +53,13 @@ export class cSnTrapez extends acSection {
         }
 
         protected Calc_B(): Result {
+                let v;
                 if (this.isDebordement()) {
-                        const v = this.prms.LargeurFond.v + 2 * this.prms.Fruit.v * this.prms.YB.v;
+                        v = this.prms.LargeurFond.v + 2 * this.prms.Fruit.v * this.prms.YB.v;
                         return new Result(v);
                 }
 
-                const v = this.prms.LargeurFond.v + 2 * this.prms.Fruit.v * this.prms.Y.v;
+                v = this.prms.LargeurFond.v + 2 * this.prms.Fruit.v * this.prms.Y.v;
                 return new Result(v);
         }
 
@@ -64,6 +68,7 @@ export class cSnTrapez extends acSection {
          * @return Périmètre mouillé (m)
          */
         protected Calc_P(): Result {
+                let v;
                 if (this.isDebordement()) {
                         // return this.CalcGeo("P") + super.Calc_P_Debordement(this.prms.Y.v - this.prms.YB.v);
 
@@ -77,11 +82,11 @@ export class cSnTrapez extends acSection {
                                 return rPDeb;
                         }
 
-                        const v = rGeoP.vCalc + rPDeb.vCalc;
+                        v = rGeoP.vCalc + rPDeb.vCalc;
                         return new Result(v);
                 }
 
-                const v = this.prms.LargeurFond.v + 2 * Math.sqrt(1 + Math.pow(this.prms.Fruit.v, 2)) * this.prms.Y.v;
+                v = this.prms.LargeurFond.v + 2 * Math.sqrt(1 + Math.pow(this.prms.Fruit.v, 2)) * this.prms.Y.v;
                 return new Result(v);
         }
 
@@ -90,6 +95,7 @@ export class cSnTrapez extends acSection {
          * @return Surface mouillée (m2)
          */
         protected Calc_S(): Result {
+                let v;
                 if (this.isDebordement()) {
                         // return this.CalcGeo("S") + super.Calc_S_Debordement(this.prms.Y.v - this.prms.YB.v);
                         const rGeoS: Result = this.CalcGeo("S");
@@ -102,11 +108,11 @@ export class cSnTrapez extends acSection {
                                 return rSDeb;
                         }
 
-                        const v = rGeoS.vCalc + rSDeb.vCalc;
+                        v = rGeoS.vCalc + rSDeb.vCalc;
                         return new Result(v);
                 }
 
-                const v = this.prms.Y.v * (this.prms.LargeurFond.v + this.prms.Fruit.v * this.prms.Y.v);
+                v = this.prms.Y.v * (this.prms.LargeurFond.v + this.prms.Fruit.v * this.prms.Y.v);
                 return new Result(v);
         }
 
@@ -155,7 +161,8 @@ export class cSnTrapez extends acSection {
          * @return S x Yg
          */
         protected Calc_SYg(): Result {
-                const v = (this.prms.LargeurFond.v / 2 + this.prms.Fruit.v * this.prms.Y.v / 3) * Math.pow(this.prms.Y.v, 2);
+                const v = (this.prms.LargeurFond.v / 2 + this.prms.Fruit.v * this.prms.Y.v / 3)
+                        * Math.pow(this.prms.Y.v, 2);
                 return new Result(v);
         }
 
@@ -165,6 +172,7 @@ export class cSnTrapez extends acSection {
          * @return S x Yg
          */
         protected Calc_dSYg(): Result {
+                // tslint:disable-next-line:variable-name
                 let SYg = this.prms.Fruit.v / 3 * Math.pow(this.prms.Y.v, 2);
                 SYg += (this.prms.LargeurFond.v / 2 + this.prms.Fruit.v * this.prms.Y.v / 3) * 2 * this.prms.Y.v;
                 return new Result(SYg);
diff --git a/src/section/section_type.ts b/src/section/section_type.ts
index ec73bc21ee3006d7dcf35f3bce5a66b777b66c64..e5dcc6a05c525549a934719897778a2b472731cf 100644
--- a/src/section/section_type.ts
+++ b/src/section/section_type.ts
@@ -250,13 +250,13 @@ export abstract class acSection extends ComputeNode {
                 this.debug("in calcFromY(" + sDonnee + ", rY=" + rY + ") old " + sDonnee + "=" + this.arCalc[sDonnee]);
                 this.debug("this.Y=" + this.prms.Y.toString());
 
-                if (rY != undefined && (!this.prms.Y.isDefined || (this.prms.Y.isDefined && rY != this.prms.Y.v))) {
+                if (rY !== undefined && (!this.prms.Y.isDefined || (this.prms.Y.isDefined && rY !== this.prms.Y.v))) {
                         this.prms.Y.v = rY;
                         // On efface toutes les données dépendantes de Y pour forcer le calcul
                         this.Reset(false);
                 }
                 let res;
-                if (this.arCalc[sDonnee] == undefined) {
+                if (this.arCalc[sDonnee] === undefined) {
                         // La donnée a besoin d'être calculée
                         switch (sDonnee) {
                                 case "I-J": // Variation linéaire de l'énergie spécifique (I-J) en m/m
@@ -310,12 +310,12 @@ export abstract class acSection extends ComputeNode {
                 this.debug("this.Y=" + this.prms.Y.toString());
 
                 // Si la largeur aux berges n'a pas encore été calculée, on commence par ça
-                if (sDonnee !== "B" && this.arCalcGeo.B == undefined) {
+                if (sDonnee !== "B" && this.arCalcGeo.B === undefined) {
                         this.CalcGeo("B");
                 }
 
                 let res: Result;
-                if (this.arCalcGeo[sDonnee] == undefined) {
+                if (this.arCalcGeo[sDonnee] === undefined) {
                         // La donnée a besoin d'être calculée
                         this.Swap(true); // On mémorise les données hydrauliques en cours
                         this.Reset(false);
@@ -846,6 +846,7 @@ export abstract class acSection extends ComputeNode {
                                 res = Y0;
                         } else {
                                 // let Yco = oHautConj.Newton(Y0);
+                                // tslint:disable-next-line:variable-name
                                 const Yco: Result = oHautConj.Newton(Y0.vCalc);
 
                                 // if (Yco == undefined || !oHautConj.hasConverged()) {
diff --git a/src/session_nub.ts b/src/session_nub.ts
index f9aedd3eb5f5329ffc2a5e382bba0e8b4bb94735..c9a0bea5f2ed4659c4d8899503d548fd708b062c 100644
--- a/src/session_nub.ts
+++ b/src/session_nub.ts
@@ -222,7 +222,7 @@ export class SessionNub {
     /**
      * liste des valeurs(paramètre, résultat, résultat complémentaire) liables à un paramètre
      * @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string
-     * @returns tableau d'objets de la forme { "value":NamedIterableValues, "nub":Nub},
+     * @returns tableau d'objets de la forme { "value":INamedIterableValues, "nub":Nub},
      *   nub=Nub d'origine de la "value"
      *
      *   l'étiquette "name" est de la forme <n|N1>[.[N2]]
diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts
index 9b2c4e165aed224878246a8f3dc7975886a92b2f..ce52378ad39882307008205a533d666d82e0c8e2 100644
--- a/src/structure/parallel_structure.ts
+++ b/src/structure/parallel_structure.ts
@@ -5,7 +5,7 @@ import { ParallelStructureParams } from "./parallel_structure_params";
 import { Structure } from "./structure";
 
 import { BaseParam } from "../param/param-base";
-import { NamedIterableValues } from "../param/param-value-iterator";
+import { INamedIterableValues } from "../param/param-value-iterator";
 import { ParamValues } from "../param/param-values";
 import { IParamDefinitionIterator, ParamsEquation, ParamsEquationArrayIterator } from "../param/params-equation";
 
@@ -221,7 +221,7 @@ export class ParallelStructure extends Nub {
     }
 
     // interface IReferencedNub
-    public getReferencedObject(desc: string): NamedIterableValues {
+    public getReferencedObject(desc: string): INamedIterableValues {
         try {
             // analyse n.X
             const i: IStructureVarCalc = this.getStructureVarCalc(desc);
@@ -269,7 +269,7 @@ export class ParallelStructure extends Nub {
      * liste des valeurs (paramètre, résultat, résultat complémentaire) liables à un paramètre
      * @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string
      * @returns tableau d'objets de la forme :
-     *          { "name":string, "value":NamedIterableValues, "nub":Nub}, nub=Nub d'origine de la "value"
+     *          { "name":string, "value":INamedIterableValues, "nub":Nub}, nub=Nub d'origine de la "value"
      */
     public getLinkableValues(src: any): any[] {
         // paramètres liables de ce Nub
diff --git a/src/util/definedvalue.ts b/src/util/definedvalue.ts
index fb27faaa1511d3eadbd2a094c171ec0348fa8675..9c180f88931228dd617105ea55d95f38551c5200 100644
--- a/src/util/definedvalue.ts
+++ b/src/util/definedvalue.ts
@@ -1,7 +1,7 @@
 export class DefinedValue<T> {
 
     get isDefined() {
-        return this._value != undefined;
+        return this._value !== undefined;
     }
 
     get uncheckedValue() {
@@ -17,7 +17,7 @@ export class DefinedValue<T> {
     }
     private _value: T;
 
-    constructor(v: T = undefined) {
+    constructor(v?: T) {
         this._value = v;
     }
 
@@ -39,7 +39,7 @@ export class DefinedValue<T> {
      * (et donc pour pouvoir éventuellement appeler l'accesseur parent)
      */
     protected getValue(): T {
-        if (this._value == undefined) {
+        if (this._value === undefined) {
             throw new Error("undefined value");
         }
 
@@ -56,14 +56,17 @@ export class DefinedValue<T> {
     }
 }
 
+// tslint:disable-next-line:max-classes-per-file
 export class DefinedBoolean extends DefinedValue<boolean> {
 }
 
+// tslint:disable-next-line:max-classes-per-file
 export class DefinedNumber extends DefinedValue<number> {
 }
 
+// tslint:disable-next-line:max-classes-per-file
 export class DefinedString extends DefinedValue<string> {
-    constructor(v: any = undefined) {
-        super(v == undefined ? v : String(v));
+    constructor(v?: any) {
+        super(v === undefined ? v : String(v));
     }
 }
diff --git a/src/util/enum.ts b/src/util/enum.ts
index 04a2699ac4126c94f3f9ae5015df4aae34329327..fe4f62117e7b754fd434e3faa2dce18221a46cdc 100644
--- a/src/util/enum.ts
+++ b/src/util/enum.ts
@@ -1,21 +1,21 @@
 /**
  * classe d'itérateurs pour les enums
  * cf. https://stackoverflow.com/questions/21293063/how-to-programmatically-enumerate-an-enum-type-in-typescript-0-9-5#21294925
-
-   utilisation :
-
-    for (const v of EnumEx.getValues(MonTypeEnum)) {
-       console.log(v);
-    }
-
-    for (const n of EnumEx.getNames(MonTypeEnum)) {
-       console.log(n);
-    }
-
-    for (const c of EnumEx.getNamesAndValues(MonTypeEnum)) {
-       console.log(c.name);
-       console.log(c.value);
-    }
+ *
+ * utilisation :
+ *
+ *  for (const v of EnumEx.getValues(MonTypeEnum)) {
+ *     console.log(v);
+ *  }
+ *
+ *  for (const n of EnumEx.getNames(MonTypeEnum)) {
+ *     console.log(n);
+ *  }
+ *
+ *  for (const c of EnumEx.getNamesAndValues(MonTypeEnum)) {
+ *     console.log(c.name);
+ *     console.log(c.value);
+ *  }
  */
 export class EnumEx {
     /**
diff --git a/src/util/interval.ts b/src/util/interval.ts
index 7ac34df3f90999971eb6471c1b45c41a823b1c8d..8b2a78a1622f4d4dbe0a2626bcfc7940bf69aa2a 100644
--- a/src/util/interval.ts
+++ b/src/util/interval.ts
@@ -10,7 +10,7 @@ export class Interval extends Pair {
     }
 
     public checkValue(v: number) {
-        if (v == undefined) {
+        if (v === undefined) {
             const e = new Message(MessageCode.ERROR_INTERVAL_UNDEF);
             throw e;
         }
diff --git a/src/util/log.ts b/src/util/log.ts
index 4044871f5a5bcbf4bfdd935a43a1271a88974bb4..f7e346b0643492e3a97728c17efd4ede92514c3c 100644
--- a/src/util/log.ts
+++ b/src/util/log.ts
@@ -1,5 +1,6 @@
 import { Message, MessageCode } from "./message";
 
+// tslint:disable-next-line:class-name
 export class cLog {
     private _messages: Message[] = [];
 
diff --git a/src/util/numericalstring.ts b/src/util/numericalstring.ts
index c60d63b4df7dea27305d1abb53b391623316d33e..9c35a4e91cb42c4122cea60603c1803af873a38a 100644
--- a/src/util/numericalstring.ts
+++ b/src/util/numericalstring.ts
@@ -1,9 +1,9 @@
-import { DefinedBoolean, DefinedString, DefinedValue } from "./definedvalue";
+import { DefinedBoolean, DefinedString } from "./definedvalue";
 
 export class NumericalString extends DefinedString {
 
     private get isNumericalFlag(): DefinedBoolean {
-        if (this._isNumericalFlag == undefined) {
+        if (this._isNumericalFlag === undefined) {
             this._isNumericalFlag = new DefinedBoolean();
         }
         return this._isNumericalFlag;
@@ -42,7 +42,7 @@ export class NumericalString extends DefinedString {
     }
     private _isNumericalFlag: DefinedBoolean;
 
-    constructor(s: any = undefined) {
+    constructor(s?: any) {
         super(s);
     }
 
diff --git a/src/util/observer.ts b/src/util/observer.ts
index bc9193f9ed8b0d2921544e8fcda65757440c3599..e3f71f218bb3f7fc60a1675767b7f41d4a0f9c60 100644
--- a/src/util/observer.ts
+++ b/src/util/observer.ts
@@ -1,3 +1,4 @@
+// tslint:disable-next-line:interface-name
 export interface Observer {
     update(sender: any, data: any): void;
 }
diff --git a/src/util/result.ts b/src/util/result.ts
index b16c054fe912179a4597a10952489bf600911ea7..7208a088070db82781d624bf75e01fecf831c70f 100644
--- a/src/util/result.ts
+++ b/src/util/result.ts
@@ -1,6 +1,6 @@
 import { JalhydObject } from "../jalhyd_object";
 // tslint:disable-next-line:max-line-length
-import { NamedIterableValues, NumberArrayIterator, NumberArrayReverseIterator, NumberIterator } from "../param/param-value-iterator";
+import { INamedIterableValues, INumberIterator, NumberArrayIterator, NumberArrayReverseIterator } from "../param/param-value-iterator";
 import { cLog } from "./log";
 import { Message, MessageCode, MessageSeverity } from "./message";
 import { ResultElement } from "./resultelement";
@@ -10,7 +10,7 @@ import { ResultElement } from "./resultelement";
  * Peut comporter un ou plusieurs Result.
  */
 // tslint:disable-next-line:max-classes-per-file
-export class Result extends JalhydObject implements NamedIterableValues {
+export class Result extends JalhydObject implements INamedIterableValues {
     /**
      * Messages (erreurs, infos, ...)
      */
@@ -26,7 +26,7 @@ export class Result extends JalhydObject implements NamedIterableValues {
     /**
      * itérateur sur les valeurs des ResultElements
      */
-    private _iterator: NumberIterator;
+    private _iterator: INumberIterator;
 
     constructor(v?: number | Message | ResultElement, d?: any) {
         super();
@@ -270,23 +270,23 @@ export class Result extends JalhydObject implements NamedIterableValues {
         return false;
     }
 
-    //  interface NamedIterableValues
+    //  interface INamedIterableValues
 
-    public get valuesIterator(): NumberIterator {
+    public get valuesIterator(): INumberIterator {
         const tmp: number[] = [];
         for (const re of this._resultElements) {
             tmp.push(re.vCalc);
         }
-        return tmp[Symbol.iterator]() as NumberIterator;
+        return tmp[Symbol.iterator]() as INumberIterator;
     }
 
     public get hasMultipleValues(): boolean {
         return this._resultElements.length > 1;
     }
 
-    //  interface NamedIterableValues pour les résultats complémentaires
+    //  interface INamedIterableValues pour les résultats complémentaires
 
-    public getIterableExtraResults(name: string): NamedIterableValues {
+    public getIterableExtraResults(name: string): INamedIterableValues {
         const res = new ExtraResults(name);
         let found = false;
 
@@ -305,7 +305,7 @@ export class Result extends JalhydObject implements NamedIterableValues {
         return undefined;
     }
 
-    public initValuesIterator(reverse: boolean = false): NumberIterator {
+    public initValuesIterator(reverse: boolean = false): INumberIterator {
         const vals: number[] = [];
         for (const r of this._resultElements) {
             vals.push(r.vCalc);
@@ -344,7 +344,7 @@ export class Result extends JalhydObject implements NamedIterableValues {
  * série de valeurs de résultat complémentaire
  */
 // tslint:disable-next-line:max-classes-per-file
-export class ExtraResults extends JalhydObject implements NamedIterableValues {
+export class ExtraResults extends JalhydObject implements INamedIterableValues {
     private _name: string;
 
     private _values: number[];
@@ -352,7 +352,7 @@ export class ExtraResults extends JalhydObject implements NamedIterableValues {
     /**
      * itérateur courant
      */
-    private _iterator: NumberIterator;
+    private _iterator: INumberIterator;
 
     constructor(n: string) {
         super();
@@ -364,10 +364,10 @@ export class ExtraResults extends JalhydObject implements NamedIterableValues {
         this._values.push(v);
     }
 
-    // interface NamedIterableValues
+    // interface INamedIterableValues
 
-    public get valuesIterator(): NumberIterator {
-        return this._values[Symbol.iterator]() as NumberIterator;
+    public get valuesIterator(): INumberIterator {
+        return this._values[Symbol.iterator]() as INumberIterator;
     }
 
     public get hasMultipleValues(): boolean {
@@ -378,7 +378,7 @@ export class ExtraResults extends JalhydObject implements NamedIterableValues {
         return this._name;
     }
 
-    public initValuesIterator(reverse: boolean = false): NumberIterator {
+    public initValuesIterator(reverse: boolean = false): INumberIterator {
         if (reverse) {
             this._iterator = new NumberArrayReverseIterator(this._values);
         } else {
diff --git a/src/value_ref/object_ref.ts b/src/value_ref/object_ref.ts
index 1d875f03d8da3cdf8d84482b9267995a272dfd72..678f48fb9d51eb311b2791cae4e9977bd0cef2d0 100644
--- a/src/value_ref/object_ref.ts
+++ b/src/value_ref/object_ref.ts
@@ -1,5 +1,4 @@
-import { Nub } from "../nub";
-import { NamedIterableValues, NumberIterator } from "../param/param-value-iterator";
+import { INamedIterableValues, INumberIterator } from "../param/param-value-iterator";
 import { ParamValues } from "../param/param-values";
 import { Result } from "../util/result";
 
@@ -47,12 +46,12 @@ export interface IReferencedNub {
     /**
      * itérateur sur les valeurs
      */
-    getReferencedValuesIterator(desc: string): NumberIterator;
+    getReferencedValuesIterator(desc: string): INumberIterator;
 
     /**
      * objet (paramètre/résultat/résultat complémentaire) référencé
      */
-    getReferencedObject(desc: string): NamedIterableValues;
+    getReferencedObject(desc: string): INamedIterableValues;
 }
 
 /**
@@ -88,12 +87,12 @@ export interface INubReference {
     /**
      * itérateur sur les valeurs référencées
      */
-    readonly referencedValuesIterator: NumberIterator;
+    readonly referencedValuesIterator: INumberIterator;
 
     /**
      * objet (paramètre/résultat/résultat complémentaire) référencé
      */
-    readonly referencedObject: NamedIterableValues;
+    readonly referencedObject: INamedIterableValues;
 
     /**
      * définition de la valeur référencée dans le Nub
@@ -137,7 +136,7 @@ export class NubReference implements INubReference {
     }
 
     public get isReferenceDefined(): boolean {
-        return this._referencedNub != undefined && this._refDefinition != undefined;
+        return this._referencedNub !== undefined && this._refDefinition !== undefined;
     }
 
     /**
@@ -182,14 +181,14 @@ export class NubReference implements INubReference {
     /**
      * itérateur sur les valeurs référencées
      */
-    public get referencedValuesIterator(): NumberIterator {
+    public get referencedValuesIterator(): INumberIterator {
         return this._referencedNub.getReferencedValuesIterator(this._refDefinition);
     }
 
     /**
      * objet (paramètre/résultat/résultat complémentaire) référencé
      */
-    public get referencedObject(): NamedIterableValues {
+    public get referencedObject(): INamedIterableValues {
         return this._referencedNub.getReferencedObject(this._refDefinition);
     }
 }