就我学习打字稿而言,我面临着一个问题。 首先,我在单个 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扩展?
感谢。
答案 0 :(得分:-1)
使用tsconfig.json,以这样的方式定位es5:
{
"compilerOptions": {
"experimentalDecorators": true,
"module": "commonjs",
"target": "es5"
}
...