Array.prototype.find接口扩展在包含Module时引发问题

时间:2016-05-20 16:16:25

标签: typescript intellisense visual-studio-code typescript1.8

就我学习打字稿而言,我面临着一个问题。 首先,我在单个 app.ts 中实现此Array Extension。由于多种原因,我正在做这件事!

我的项目代码变得越来越大我决定创建第一个模块。我创建了一个名为 whatever.ts 的新文件:

export class Foo{...}

我在 app.ts 中导入此模块,如下所示:

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

但是在这一点上,我之前的Array Extension看起来给我的旧代码带来了一些麻烦。

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>>();
    }
...
}

每次我使用数组函数/方法时,intellisense都会尖叫:

  

[ts] Property&#39; xxx&#39;类型&#39;数组&lt;不存在KeyValuePair&LT; T,U&gt;&gt;。&#39;

     

任何

每次我尝试使用时都会发生这种情况:

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

如果我没有导入模块,一切都还可以。我的第一个模块失败了吗?这个问题已知吗? (:我没有找到任何内容。)或者是他们用多个文件编写我的应用程序的良好和正确的方法,或者我只是卡住了,只要我将使用这个就必须在单个文件中编码Array.prototype.find扩展?

感谢。

1 个答案:

答案 0 :(得分:-1)

使用tsconfig.json,以这样的方式定位es5:

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "module": "commonjs", 
        "target": "es5"
    }
    ...