为啥 angular-cli 生成 ngOnInit 而无需输入函数结果?

Posted

技术标签:

【中文标题】为啥 angular-cli 生成 ngOnInit 而无需输入函数结果?【英文标题】:Why does angular-cli generate ngOnInit with no typing for the function result?为什么 angular-cli 生成 ngOnInit 而无需输入函数结果? 【发布时间】:2018-02-13 03:01:54 【问题描述】:

我有一个由 angular-cli 生成的组件,生成的 .ts 文件代码有:

ngOnInit() 

而不是

ngOnInit(): void 

我的 tslint 配置为始终希望 typedef 存在,但 cli 生成的代码没有 typedef - 这是我的问题。

有没有办法将 cli 配置为始终设置所需的 typedef,或者我唯一的选择是禁用此 tslint 检查或手动修复它?

【问题讨论】:

这与 Angular 本身无关。这是与 angular-cli 和/或 tslint 相关的问题。顺便说一句,TypeScript 中不使用术语“typedef”。 是的,你是对的 - 我使用 typedef 是因为它是 tslint 规则的名称,用于在某些地方使用类型。 【参考方案1】:

Angular CLI 使用蓝图来生成工件,并且在你的 node_modules 中有一个目录 @angular/cli/blueprints。例如,有一个子文件夹 component/files/path,您可以在其中找到组件生成的模板。 Angular CLI 团队承诺在未来允许创建自定义蓝图,但从今天开始,你不能只修改模板。

如果只需要在方法签名中添加 void,可以手动添加或者禁用对应的 tslint 规则。

另一种 hacky 方法是使用库 angular-cli-tools 生成模板(请参阅 https://github.com/littleuniversestudios/angular-cli-tools),但由于您只想添加 void 返回类型,只需手动执行。

【讨论】:

我的问题是我无法配置 cli 应如何生成我的文件以匹配我的 tslint 选项。而且我不知道为什么用打字稿编写的角度没有制作正确的蓝图,因为使用 tslint 的 typedef 规则,您可以强制用户始终在某些地方拥有类型,因此如果蓝图中存在 :void 它总是不管 typedef 规则是开还是关,都是正确的。不过无论如何,谢谢你的回复! 创建一个关于在此处添加 void 的功能请求github.com/angular/angular-cli

以上是关于为啥 angular-cli 生成 ngOnInit 而无需输入函数结果?的主要内容,如果未能解决你的问题,请参考以下文章

Angular-cli 构建生成的 CSS 不起作用

为啥 Angular Oninit 仅在离开页面时才调用服务

有没有办法告诉 angular-cli (for angular 2) 生成缩小版的 css?

通过 angular-cli 生成的 Angular 组件的自定义项目级模板

由angular命令行工具(angular-cli)生成的目录和文件

是否可以使用单个 angular-cli 命令(如 ng generate component comp1、comp2、comp3)生成多个 Angular 组件?