2017-09-05 8 views
0

FNファクトリーによって返され、そして、簡潔にするため 、のは、そのようなものを想像してみましょうTS過負荷関数のシグネチャは、私は関数を返す高階関数を持っている

interface payload { 
    [key: string] : {} 
} 

私がする必要がどのようにある。この(非常に一般的な)のような引数の署名を持っていbaz

function foo(payload: {id: string}) {} 

がどのように私はそれを達成することができます唯一の、より正確な署名(希望)を有することがfooのためにその署名をオーバーロード?

+1

あなたは 'const foo = factory()as(payload:{id:string})=> 'hello';'を意味しますか? –

答えて

1

多分そのようなものでしょうか?

function factory<P extends { [key: string]: {}}>() { 
    return function baz(payload: P): 'hello' { 
    return 'hello'; 
    } 
} 

const foo = factory<{id: string}>(); // OK 
const bar = factory<number>(); // Error 
+0

これは合うかもしれません、私は 'payload' **は常に**とオブジェクト' {[key:string]:{}} 'でなければなりません。ペイロードのプロパティを記述する方法を追加したいだけです。何か案が? – Hitmands

+0

@Hitmands私は編集しました。 – Paleo

関連する問題