Я не совсем уверен, как вам помочь, но вот некоторые мысли, которые могут помочь. plainToClass
-метод определяется как
export function plainToClass<T, V>(cls: ClassType<T>, plain: V[], options?: ClassTransformOptions): T[];
export function plainToClass<T, V>(cls: ClassType<T>, plain: V, options?: ClassTransformOptions): T;
export function plainToClass<T, V>(cls: ClassType<T>, plain: V|V[], options?: ClassTransformOptions): T|T[] {
return classTransformer.plainToClass(cls, plain as any, options);
}
источник: https://github.com/typestack/class-transformer/blob/develop/src/index.ts
Когда вы определяете myObject как any
, plainToClass
не знает, какую реализацию использовать, и поэтому компилятор может подумать, что вы используете
export function plainToClass<T, V>(cls: ClassType<T>, plain: V, options?: ClassTransformOptions): T;
(у которого нет filter
-метода, потому что он не возвращает массив).
Если вы объявляете myObject
как any[]
или используете plainToClass
следующим образом: plainToClass<any[]>(MyClass, myObject).filter(true); // added <any[]>
это может работать, так как компилятор знает, какой метод использовать (тот, который возвращает массив), и вы можете используйте .filter
на нем.
Другая вещь, которая может помочь, - это создать собственную функцию plainToClass
, которая возвращает только массив и использует метод из class-transformer
пакета / библиотеки.
Это всего лишь догадки, но, надеюсь, это поможет.