Ответ 1
Мне удалось заставить его работать без ошибок TS (1.8.9), Angular2 (2.0.0-beta.12) и вызова рабочей функции с использованием следующего шаблона:
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
Затем создайте (если его не существует) файл global.d.ts, локальный для вашего проекта:
global.d.ts(локальный для проекта, а не основной файл TS с таким же именем)
export {}
declare global {
interface String {
calcWidth(): number;
}
}
extensions.ts(весь файл)
export {}
//don't redefine if it already there
if (!String.prototype.hasOwnProperty('calcWidth')) {
String.prototype.calcWidth = function (): number {
//width calculations go here, but for brevity just return length
return this.length;
}
}
Тогда в вашем, независимо от того, какой ваш первый System.import(имя файла) (my is main.ts). Просто используйте один раз:
import './extensions' //or whatever path is appropriate
...
...
Теперь, в вашем приложении вы можете использовать свой интерфейс:
var testString = 'fun test';
console.log(testString.calcWidth());
Производит вывод консоли:
8
Надеюсь, что это будет полезно.