2016-11-21 185 views
0

ClassDecorator被定義爲:類裝飾類型不匹配錯誤

declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void; 

我都寫過這樣的:

export function ClassDecorator(params: any): ClassDecorator { 
    return function (target) { 
     Object.seal(target); 
     Object.seal(target.prototype); 
    } 
} 

但是,編譯器給我一個錯誤:

Error:(2, 12) TS2322:Type '(target: any, key: any, descriptor: any) => void' is not assignable to type 'ClassDecorator'. 

爲什麼?

回答

1

ClassDecorator類型被定義爲一個函數,它接受一個參數,您返回一個帶有三個參數的函數,這是不兼容的,這就是爲什麼您會收到錯誤消息。

+0

謝謝,一旦我修復,我得到另一個錯誤:'錯誤:(4,22)TS2339:屬性'原型'不存在類型'對象'。' –

+0

@it應該工作,如果你說目標是'任何',它看起來像你在代碼中隱含的。你說它應該是'Object'類型嗎? – Alex

+0

它應該是'Function'或'TFunction'類型,據我所知,類型定義 –