تايبسكريبت - مصفوفة مخصصة من الدوال
أجد صعوبة في معرفة ما إذا كان من الممكن في TypeScript إعلان مصفوفة من الدوال ذات نوع ثابت.
على سبيل المثال، يمكنني فعل هذا:
foo: (data:string) => void = function (data) {};
لكن إذا أردت أن يكون foo مصفوفة من الدوال التي تأخذ سلسلة نصية ولا ترجع شيئًا، كيف أفعل ذلك؟
foo: (data:string) => void [] = [];
لا يعمل لأن TypeScript يعتقد أنها دالة تأخذ سلسلة وتعيد مصفوفة من النوع void، ويبدو أنه لا يحب أن أحاول تغليف الدالة بالأقواس.
أي أفكار؟
الإجابة: بفضل محمد أدناه، إليك مثال يعمل في ملعب TypeScript:
class whatever {
public foo: { (data: string): void; }[] = [];
dofoo() {
for (var i=0; i < this.foo.length; i++) {
this.foo[i]("test");
}
}
}
var d = new whatever();
d.foo.push(function(bar){alert(bar)})
d.foo.push(function(bar){alert(bar.length.toString())})
d.dofoo();
الإجابة رقم 1
يمكنك العثور على هذا في قسم مواصفات اللغة 3.6.4:
foo: { (data: string): void; } []
الإجابة رقم 2
طرق أخرى (أحدث، وأكثر قابلية للقراءة) لكتابة مصفوفة من الدوال باستخدام الأسهم السميكة:
let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
الإجابة رقم 3
أو foo: ((data: string) => void)[]
