Расширение интерфейса Array.prototype.find вызывает проблемы при включении модуля

Что касается изучения машинописного текста, я столкнулся с проблемой. Прежде всего, я реализую это расширение массива в своем единственном app.ts. Я делаю это по нескольким причинам!

Код моего проекта становится все больше и больше, и я решил создать свой первый модуль. Я создал новый файл с именем whatever.ts:

export class Foo{...}

и я импортирую этот модуль в свой app.ts следующим образом:

import * as whatever from './whatever'
let Foo = new whatever.Foo();

Но на данный момент мое предыдущее расширение массива выглядит немного проблемы с моим старым кодом.

class KeyValuePair<T, U> {
    public key: T;
    public value: U;

    constructor(key: T, value: U) {
        this.key = key;
        this.value = value;
    }
}

class Dictionnary<T, U> {
    private _keyValuePairs: Array<KeyValuePair<T, U>>;

    constructor() {
        this._keyValuePairs = new Array<KeyValuePair<T, U>>();
    }
...
}

Каждый раз, когда я использую функцию/метод Array, intellisense кричит:

[ts] Свойство «xxx» не существует для типа «Array‹ KeyValuePair‹ T, U ››».

Любые

Это происходит каждый раз, когда я пытаюсь использовать:

this._keyValuePairs.splice(...
this._keyValuePairs.indexOf(...
this._keyValuePairs.length
for (let kvp of this._keyValuePairs) {...

Если вам нужен пример, попробуйте этот метод: (также есть другие объявления об этом)

public keys(): Array<T> {
    let keys = new Array<T>();

    for (let kvp of this._keyValuePairs) {
        keys.push(kvp.key);
    }
    return keys;
}

Все в порядке, если я не импортирую модуль. Я провалил свой первый модуль? Эта проблема известна? (: Я ничего не нашел на нем.) Или это хороший и правильный способ закодировать мое приложение с несколькими файлами, или я просто застрял, и мне придется кодировать в одном файле, пока я буду использовать этот массив. Prototype.find Расширение ?

Спасибо.


person everblack    schedule 20.05.2016    source источник
comment
у вас есть Plunk для вашего кода?   -  person Madhu Ranjan    schedule 20.05.2016
comment
Конечно, попробуйте этот один   -  person everblack    schedule 23.05.2016


Ответы (1)


Играем с tsconfig.json, ориентируясь на es5 следующим образом:

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "module": "commonjs", 
        "target": "es5"
    }
    ...
person everblack    schedule 23.05.2016
comment
Вы быстро сдались и пришли к неверному выводу. - person Aluan Haddad; 14.12.2017
comment
Это был просто обходной путь, пожалуйста, проверьте stackoverflow.com/questions/31455805/ для получения дополнительной информации. Или ответ с вашим собственным решением был бы полезен. - person everblack; 14.12.2017