TypeScriptを学びたいと思っています。ジェネリックコレクションタイプを実装するためのアドバイスが必要です。私は辞書とHashSetを別の質問に入れました。ここで私のリストのタイプについて助言したいと思います。TypeScript Generic Collection:List
特にForEach-Operationは少し奇妙に見えます。私はここで別の質問でそれを見つけたと思うし、反復が早期に中止されたり完了した場合にフィードバックを返すことによってtrueまたはfalseを返すことによって「改善されました」。あなたはこのように私のリストとのForEach-メソッドを使用します
export interface IForEachFunction<T> {
(callback: T): boolean | void;
}
:
import { IForEachFunction } from "./IForEachFunction"
export class List<T> {
private _items: Array<T>;
public constructor() {
this._items = [];
}
public get Count(): number {
return this._items.length;
}
public Item(index: number): T {
return this._items[index];
}
public Add(value: T): void {
this._items.push(value);
}
public RemoveAt(index: number): void {
this._items.splice(index, 1);
}
public Remove(value: T): void {
let index = this._items.indexOf(value);
this.RemoveAt(index);
}
public ForEach(callback: IForEachFunction<T>): boolean {
for (const element of this._items) {
if (callback(element) === false) {
return false;
}
}
return true;
}
}
のForEach-繰り返しが別のファイルからインターフェイスに依存している
let myList: List<a_type> = new List<a_type>();
let completed: boolean = myList.ForEach(xyz => {
// do something with xyz
return false; // aborts the iteration
return true; // continues with the next element
});
if (completed) // we can see what happened "during" the iteration
私はこれがあると思います悪くはないが、私はどんな入力をいただければ幸いです。私が正しく使用するかどうかはわかりません。 私が本当に知りたいもう一つの質問:インターフェイスIForEachFunctionを使って関数をどのように定義できますか?私は実際にそのインタフェースを目に見える形で「再利用」していません。私は常に上記のような匿名のメソッドを宣言します。インタフェース定義を持つメソッドを呼びたい場合は可能ですか?
ありがとうございます!私が見 ラルフ
FWIW、['Array#every'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/every)は、あなたの' ForEach'メソッドと同じことをします。私はラッパーを書くのではなく、普通の配列に固執します。 – Saravana
あなたのForEach関数はうまくいくように見えますが、すべての異なることに取り組まない自己完結型の答えをどのように与えるかわからないので、この質問は少し広すぎます。 '==='の使用は問題ありません。あなたは次のようにインターフェース定義を持つ関数を定義することができます: 'var forEachFunc:IForEachFunction = function {return !! s; } '。メソッドとプロパティは、小文字で始まります。私はあなたが自分の豊かさのために 'List'クラスを実装していると仮定します。他の人が言っているように、ほとんどの場合、js配列を使うほうがよいでしょうから。 –
jcalz