2
TypeScriptを初めて使用しました。TypeScript - 任意のタイプの引数を持つ関数タイプを定義する方法
任意のタイプの引数を持つ関数タイプを定義したいと考えています。 この関数は、1つの引数または3つ以上の引数をとります。
どうすればいいですか?
(args: any) => any
このように書くことは、1つの引数が関数に渡された場合にのみ機能します。
class NotificationCenter {
private observerList: Array<() => any>;
constructor() {
this.observerList = [];
}
addObserver(observer:() => any): void {
this.observerList.push(observer);
}
}
let notificationCenter: NotificationCenter = new NotificationCenter();
let observer1 =() => {};
let observer2 = (text: string) => {return "observer2"};
let observer3 = (id: number, data: Array<any>) => {return "observer3"};
//This works fine.
notificationCenter.addObserver(observer1);
//Error:Argument of type '(text: string) => string' is not assignable to parameter of type '() => any'.
notificationCenter.addObserver(observer2);
//Error:Argument of type '(id: number, data: any[]) => string' is not assignable to parameter of type '() => any'.
notificationCenter.addObserver(observer3);
あなたが望むのは '(... params:any [])=> any'だと思います。 [this](http://stackoverflow.com/questions/12699058/typescript-types-for-variadic-functions) – tforgione
ありがとう!それだけが必要! – hytm