0
T
がFunction
である場合とそうでない場合がありますが、どのようにすれば実行できますか(これは可能であると仮定して)Typescriptでキャストできますか?genericを実行可能関数にキャストするにはどうすればよいですか?
class Test<T> {
constructor(public value: T) {}
method() {
if (this.value instanceof Function) {
let fn = <Function>this.value; // [ts] Neither type 'T' nor type 'Function' is assignable to the other.
fn();
}
}
}
let test = new Test(() => {});
test.method();
これを解決できるのであれば、次のように特定の関数シグネチャにもキャストできますか?
let fn: (input: T) => any = <(input: T) => Test<T>>this.value;
私は(必要に応じて、背景を追加することができます)そのための半合法的なユースケースがありますが、私は助けるが、私は丸い穴に四角いペグを打ってるかしらすることはできません。
興味深いです。上記の '(input:T)=> Test'のような関数インタフェースでダブルアサーションを使用できますか? –
dvlsg
@dvlsg確かに。答えに – basarat
が追加されました。素早く反応してくれてありがとう! – dvlsg