考慮以下幾點:當你調用了一些如何定義修飾器的類型以防止丟失裝飾函數的類型信息?
// @flow
function a(s: string): ?string {
return s === '' ? null : s
}
function decorate(f: Function): Function {
return f
}
const b = decorate(a)
a(12)
b(12)
流拋出一個錯誤,而不是當你擁有多項
13: a(12)
^^ number. This type is incompatible with the expected param type of
3: function a(s: string): ?string {
^^^^^^ string
調用B是有這樣一種方式,你可以做像
function decorate(f: Function): typeof(f) {
return f
}
使得裝飾功能正常typechecks沒有明確限制裝點什麼樣的回報
function decorate(f: Function): (string) => ?string {}
或複製像
const b: typeof(a) = decorate(a)
正是我想要的感謝! – m0meni