英文:
Where to set angular strictness flags that configure how strict strictTemplates is?
问题
我目前正在将我们的应用程序转换为strictTemplates,并且我们遇到了大量的错误,其中一些比其他的更相关。
所以我想配置angular类型检查器的严格性,并在文档中找到了这些严格性标志。
https://angular.io/guide/template-typecheck#troubleshooting-template-errors
以下是文档中的一些示例
strictInputTypes 检查绑定表达式对@Input()字段的可赋值性。还会影响指令泛型类型的推断。
strictInputAccessModifiers 在将绑定表达式分配给@Input()时,是否遵守private/protected/readonly等访问修饰符。如果禁用,将忽略@Input的访问修饰符;只检查类型。默认情况下,即使将strictTemplates设置为true,此选项也为false。
strictNullInputTypes 检查@Input()绑定时是否遵守strictNullChecks(根据strictInputTypes)。在使用未考虑到strictNullChecks的库时,关闭此选项可能会很有用。
[...]
我唯一无法回答的问题是在哪里设置它们... 所以应该在哪个文件中配置这些标志,以及如何配置?我在互联网上搜索了解决方案,但只找到了一大堆关于如何启用--strict以及其好处的文章。
英文:
I am currently converting our application to strictTemplates, and we are comming up with a huge amount of errors, some of them are more relevant than others.
So i wanted to configure the strictness of the angular type checker, and found this strictness flags in the documentation.
https://angular.io/guide/template-typecheck#troubleshooting-template-errors
Here are some examples from the docs
> strictInputTypes Whether the assignability of a binding expression to the @Input() field is checked. Also affects the inference of directive generic types.
>
> strictInputAccessModifiers Whether access modifiers such as private/protected/readonly are honored when assigning a binding expression to an @Input(). If disabled, the access modifiers of the @Input are ignored; only the type is checked. This option is false by default, even with strictTemplates set to true.
>
> strictNullInputTypes Whether strictNullChecks is honored when checking @Input() bindings (per strictInputTypes). Turning this off can be useful when using a library that was not built with strictNullChecks in mind.
[...]
The only question I could not answer was where to set them... So in which file should this flags configured, and how?
I searched the internet for a solution but did only find a huge swath of articles on how to enable --strict and what the benefits are.
答案1
得分: 1
如Angular文档所示,您需要在tsconfig.json
文件中的angularCompilerOptions
字段中进行设置。
英文:
As shown in the Angular docs, you have to set them in the tsconfig.json
file, inside the angularCompilerOptions
field.
答案2
得分: 0
在这篇帖子中找到了解决方案: https://www.angular.love/en/2021/09/02/angular-compilation-restrictions-overview/
只需将以下标志放在tsconfig.app.json
中的strictTemplates选项下:
...
"compilerOptions": {
...
"strictNullChecks": true,
},
"angularCompilerOptions": {
"strictTemplates": true,
"strictInputTypes": true,
"strictNullInputTypes": true
}
英文:
Found the solution in this post: https://www.angular.love/en/2021/09/02/angular-compilation-restrictions-overview/
Just put these flags below the strictTemplates option:
in tsconfig.app.json
...
"compilerOptions": {
...
"strictNullChecks": true,
},
"angularCompilerOptions": {
"strictTemplates": true,
"strictInputTypes": true,
"strictNullInputTypes": true
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论