【发布时间】:2021-12-07 12:52:30
【问题描述】:
是否允许在没有任何界面的情况下使用功能道具?
我有一个带有属性的函数:
from - HTML 元素
to - HTML 元素
coords - 数组 [2, 2]
export const adjustElements = ({ from, to, coords }) => {
let to_rect = to.getBoundingClientRect(),
width = to_rect.width * ((coords[0] - 1) * 0.5),
height = to_rect.height * ((coords[1] - 1) * 0.5);
from.style.top = (to_rect.top + height) + "px";
from.style.left = (to_rect.left + width) + "px";
}
但是当我运行代码时出现以下错误:
Binding element 'from' implicitly has an 'any' type.
Binding element 'to' implicitly has an 'any' type.
Binding element 'coords' implicitly has an 'any' type.
之所以会这样,是因为我没有给函数添加任何接口,但问题是我有很多这样的函数,但是参数不同,所以给大家写一个新的接口会很疯狂......有没有一种方法可以让 typescript 不再需要每个函数的接口?
【问题讨论】:
-
您在这里指的是什么“接口”?您具体看到了什么错误?请查看How to Ask 的指南以及minimal reproducible example 的构成要素。它应该是足够的信息,以便其他人可以为自己展示您所看到的任何内容,因此如果您看到“很多错误”,我们可以知道它们是什么。解决错误的正确方法取决于所讨论的错误。我可以告诉你使用类型断言
any或//@ts-ignore,但我也可以告诉你从火警中取出电池而不是检查火警。 -
是的,你当然可以留下没有指定类型的东西。但为什么?这就是 TypeScript 的全部意义所在。如果您目前正在转换为 TypeScript,那么您可能希望放宽该规则。
-
但是每个函数的写接口有点奇怪。
-
我仍然看不到任何地方都需要接口。您可以使用匿名类型,例如this;那是你要的吗?如果是这样,我可以写一个答案。
-
如果
document.querySelector(...)返回null会发生什么?你怎么知道不会?编译器应该怎么知道呢?我很高兴为最初的问题写下答案,但我们无法将问题的范围扩展到您在第一件事解决后遇到的所有问题,否则问题将成为个人的技术支持会议,这不是堆栈溢出的重点。如果您有后续问题,您应该单独提问,并遵循How to Ask 的指导方针并制作minimal reproducible example(“不起作用”是不够的)。 See
标签: javascript typescript interface