现在,当您为 _Directive_ 或 _Component_ 使用输入绑定时,检查使用的变量是否存在,这是完美的。 但是此检查不检查分配给它的输入和变量是否属于同一类型。
如果它还可以检查匹配类型或是否可分配,那将是绝对完美的。 这可能是对_@angular/language-service_ 的请求
谢谢
有没有关于这个问题的更新? 这几乎是使用 angular 的少数坏事之一:类型安全模板绑定。
在我看来,这是一个大问题。
紧密的 Typescript 集成被大量宣传为 Angular2+ 的资产,但实际上大约 50% 的代码实际上没有经过类型检查。 如果您将输入作为函数传递给组件,这基本上意味着所有这些函数调用都是完全无类型的。 类型只在组件内起作用,而对于组件到组件的通信来说它完全没用,因为它实际上更有用。
这是一个更大的问题,因为应用程序中最常更改的部分缺少输入。
在这一点上,React 具有比 Angular 更好的打字稿集成,这与通常所说的相反。
我还提到自定义组件输入没有自动完成功能。 这可能与这个问题有关。
相关,可能阻止: https :
这是必需的,因为它_非常_容易出错:
<button (click)="foo('bar')">Click me</button>
使用有界方法:
// take note of the parameter type, where the template passes through a string.
public foo(bar: boolean): void {
// ...
}
这至少应该给出某种警告。
将tsConfig
文件中的fullTemplateTypeCheck
为true 将导致ng build
报告错误,如果它为false,它就会失败。
同意这是一个大问题,需要在语言服务中。 当语言服务使用 Ivy 编译器作为后端时,此功能将可用(相关工作正在进行中)。
此问题已由v11.1.0 中发布的新常春藤本地语言服务
目前这是一项可选功能,请尝试一下,如果您有任何反馈,请告诉我们。
为了获得最佳的编辑器体验,请确保您的项目在angularCompilerOptions
启用了strictTemplates
angularCompilerOptions
。
如果您遇到类似的错误,请提交一个新问题。 我会暂时关闭这个。
最有用的评论
在我看来,这是一个大问题。
紧密的 Typescript 集成被大量宣传为 Angular2+ 的资产,但实际上大约 50% 的代码实际上没有经过类型检查。 如果您将输入作为函数传递给组件,这基本上意味着所有这些函数调用都是完全无类型的。 类型只在组件内起作用,而对于组件到组件的通信来说它完全没用,因为它实际上更有用。
这是一个更大的问题,因为应用程序中最常更改的部分缺少输入。
在这一点上,React 具有比 Angular 更好的打字稿集成,这与通常所说的相反。