yur*_*hin 1 javascript dom typescript
我聆听window.matchMedia变化
我有这个错误:Parameter 'event' implicitly has an 'any' type.
我应该在此处为对象指定什么 TS 类型event?
const mobileMediaQuery = window.matchMedia("(max-width: 699px)");\nmobileMediaQuery?.addEventListener("change", processViewSizeChange);\n\nfunction processViewSizeChange(event) {\n console.log('media query changed! \xe2\x86\x92', event.matches);\n}\nRun Code Online (Sandbox Code Playgroud)\n在互联网上哪里可以查找打字稿全局类型?以防我将来需要找到类似的东西。
\n您可以使用 TypeScript 来了解您需要的类型。这是您的案例的一个例子。您知道您需要提供"change"事件类型,并且需要为侦听器提供回调函数,但您不确定如何键入回调函数,因此首先将其省略:
const mobileMediaQuery = window.matchMedia(\'(max-width: 699px)\');\nmobileMediaQuery.addEventListener(\'change\', ); /* \n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n Expected 2-3 arguments, but got 1.(2554) */\nRun Code Online (Sandbox Code Playgroud)\n如果您不包含第二个参数mobileMediaQuery.addEventListener,您将得到类似的编译器错误诊断信息。
但如果您使用的 IDE 包含 TypeScript 语言服务器和 IntelliSense 之类的东西(例如VS Code或TypeScript Playground),您可以将鼠标悬停在该addEventListener方法上以查看其签名:
(method) MediaQueryList.addEventListener<"change">(type: "change", listener: (this: MediaQueryList, ev: MediaQueryListEvent) => any, options?: boolean | AddEventListenerOptions | undefined): void (+1 overload)\nRun Code Online (Sandbox Code Playgroud)\n从签名中可以看出,listener是第二个参数,监听器中事件参数的类型是MediaQueryListEvent。所以你可以像这样输入你的监听器函数:
(method) MediaQueryList.addEventListener<"change">(type: "change", listener: (this: MediaQueryList, ev: MediaQueryListEvent) => any, options?: boolean | AddEventListenerOptions | undefined): void (+1 overload)\nRun Code Online (Sandbox Code Playgroud)\n\n
| 归档时间: |
|
| 查看次数: |
2010 次 |
| 最近记录: |