Методы расширения в машинописи (система)

В моем проекте angular2 я пытаюсь расширить прототипстрока класс с использованием машинописи. Это мой код:

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;
}

С помощью этого кода проект компилируется (также помогает контентный ассистент кода Visual Studio), но во время выполнения я получаю «содержимое не определено».

Что я делаю не так?

большое спасибо

PS: это мой 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"
  ]
}

РЕДАКТИРОВАТЬ

Я заметил, что импортJS файл вindex.html это работает, но мне не нравится этот подход.

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

Ответы на вопрос(2)

Ваш ответ на вопрос