2016-11-21 6 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: Свойство 'prototype' не существует в типе 'Object'.' –

+0

@it должен работать, если вы говорите, что цель ' any', который выглядит так, как будто вы неявно в коде. Вы говорите, что это должен быть тип 'Object'? – Alex

+0

он должен быть типа 'Function' или' TFunction', как я понимаю из определения типа –

Смежные вопросы