Métodos de extensión en mecanografiado (sistema)

En mi proyecto angular2 estoy tratando de extender el prototipo decuerda clase usando mecanografiado. Este es mi código:

interface String 
{
    startsWith(s:string);
    contains(s:string);
    containsOr(s1:string, s2:string);
}

String.prototype.startsWith = function (s:string):boolean {
    return this.indexOf (s) === 0;
}
String.prototype.contains = function (s:string):boolean {
    return this.indexOf(s) > 1;
}
String.prototype.containsOr = function (s1:string, s2:string):boolean {
    return this.indexOf(s1) > 1 || this.indexOf (s2) > 1;
}

Con este código, el proyecto se compila (también me ayuda el contenido de Visual Studio Code), pero en el tiempo de ejecución obtengo un 'contiene no está definido'.

¿Qué estoy haciendo mal?

Muchas gracias

PD: este es mi tsconfig:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "outDir": "wwwroot/app/source/"
  },
  "exclude": [
    "node_modules",
    "bower_components",
    "wwwroot",
    "typings/main",
    "typings/main.d.ts"
  ]
}

EDITAR

Me di cuenta de que importarjs presentar enindex.html funciona, pero no me gusta este enfoque.

<script src="app/source/utils/extensions.js"></script>

Respuestas a la pregunta(2)

Su respuesta a la pregunta