我正在将angular v4项目迁移到Angular7。我已经遇到了遗留代码,我无法摆脱它。它具有ClassDefinition接口,而新的Angular 7没有。 我该如何解决这个问题? 代码示例如下所示。
我试图在角度文档的变更日志中找到解决方案,但对我没有任何帮助。
import { ClassDefinition} from "@angular/core";
let componentDefinition: ClassDefinition = {
constructor: MenuItem
};
答案 0 :(得分:0)
如果您谈论此问题:https://v4.angular.io/api/core/ClassDefinition-第一种选择是只在您的模块中声明它:
/**
* Declares the interface to be used with {@link Class}.
*
* @stable
*/
export type ClassDefinition = {
/**
* Optional argument for specifying the superclass.
*/
extends?: Type<any>;
/**
* Required constructor function for a class.
*
* The function may be optionally wrapped in an `Array`, in which case additional parameter
* annotations may be specified.
* The number of arguments and the number of parameter annotations must match.
*
* See {@link Class} for example of usage.
*/
constructor: Function | any[];
} &
{
/**
* Other methods on the class. Note that values should have type 'Function' but TS requires
* all properties to have a narrower type than the index signature.
*/
[x: string]: Type<any>|Function|any[];
};
此后,您需要根据代码库决定如何处理情况,但是您应该知道-API被标记为稳定,但随后被https://github.com/angular/angular/commit/cac130eff9b9cb608f2308ae40c42c9cd1850c4d#diff-635fe23be5795132e3385c8f4899dc3a
您可以看到-原因是:
此模式不 允许像Webpack这样的构建工具来处理和优化代码,从而 导致束过大。我们正在删除此API 因为我们正在努力确保每个人都走在快速道路上 默认,并且无法使用ES5进入快速路径 DSL。替代方法是使用TypeScript和
@decorator
格式。
因此,您应该重构遗留代码并最终使用TypeScript。