升级Angular 2x至5x后出现Type泛型需类型参数编译错误
解决Angular 5x中Type泛型参数缺失的错误
这个问题是因为Angular 5对Type类型的定义进行了严格化处理——它现在是一个必须指定类型参数的泛型类型,而你之前的代码省略了这个参数,所以TypeScript会抛出错误。
下面是几种可行的修复方案,你可以根据实际场景选择:
- 如果
Yadda数组中的类型没有统一的基类/接口,只是任意类型的构造函数集合,可以用any来兼容:export declare const Yadda: Type<any>[]; - 如果这些类型都继承自同一个基类(比如
MyBaseComponent)或者实现了某个接口,建议指定具体的类型参数,这样能保留类型检查的优势:import { MyBaseComponent } from './my-base.component'; export declare const Yadda: Type<MyBaseComponent>[];
为什么会出现这个变化?
在Angular 2x的早期版本中,Type类型的定义可能相对宽松,或者你的TypeScript配置没有开启严格的泛型检查。升级到Angular 5后,@angular/core的类型定义更规范,要求必须显式指定泛型参数,同时TypeScript的严格模式可能也被默认启用,所以之前的代码就触发了错误。
内容的提问来源于stack exchange,提问作者GeeWhizBang
相关产品推荐
相关产品推荐

