【问题标题】:click function is triggring Event even when parameter is mismatched即使参数不匹配,点击功能也会触发事件
【发布时间】:2020-12-22 00:46:35
【问题描述】:

我有一个按钮,它触发了一个名为 check 的函数(resp 是我的 html 模板中的引用)

<button
(click)="check(resp)">
clickMe
</button>

在我拥有的 ts 代码中

check() {
console.log("check is clicked")
}

我可以看到我的控制台输出

但我很困惑为什么 check(Function) 被成功调用,我不希望 ts 代码中有任何参数,但我的模板代码传递了一个 arg,我期待一个签名不匹配错误,为什么它能够成功调用?

【问题讨论】:

    标签: angular typescript angular6


    【解决方案1】:

    Typescript 在设计时而不是运行时强制执行类型检查。 HTML 模板不是 .ts 文件的一部分,因此不会被编译。因为它没有被编译,Typescript 编译器看不到它。当应用程序运行时,它的标准 JS,不强制类型检查。

    【讨论】:

    • 我不混淆类型检查,关于它需要的参数
    • 我们知道 typescript 在浏览器中变成了 javascript 而 javascript 是运行时脚本,它在编程语言中有 varargs(covariance) 参数的概念被覆盖。所以这解释了你的脚本行为
    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 2013-05-19
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多