如何绕过 ESLint 调用 Typescript 中未定义的 Geolocation 接口?
Posted
技术标签:
【中文标题】如何绕过 ESLint 调用 Typescript 中未定义的 Geolocation 接口?【英文标题】:How can I bypass ESLint calling the Geolocation interface undefined in Typescript? 【发布时间】:2021-09-27 11:00:30 【问题描述】:我正在使用 Geolocation API 在地图上放置标记,但 ESLint 抱怨 GeolocationPosition 未定义。尽管如此,代码运行并给了我预期的结果,但我想清理我的代码以获取警告。我是 typescript 和 ESlint 的新手,所以我不确定从这里去哪里。有什么建议么?代码和警告图片如下。
import Map from 'leaflet';
import iconLocation, setMarker from './leafletMarker';
export function getUserPosition(callback : (position : GeolocationPosition) => void)
function success(position : GeolocationPosition)
callback(position);
function error()
console.log('Unable to retrieve your location'); // change to alerts when Alert component is ready
if (!navigator.geolocation)
console.log('Geolocation is not supported by your browser'); // change to alerts when Alert component is ready
else
navigator.geolocation.getCurrentPosition(success, error, enableHighAccuracy: true );
export function handleMyPosition(map: Map)
getUserPosition((userPosition: GeolocationPosition) =>
if (map)
const latitude, longitude = userPosition.coords;
setMarker(map, latitude, longitude, icon: iconLocation );
map?.setView([latitude, longitude], 9);
);
【问题讨论】:
为什么不配置它,而不是绕过它?参见例如eslint.org/docs/user-guide/configuring/…. 如果您的意思是更改配置以使 eslint 不再检查未定义,那并不理想。也许我使用了错误的地理位置,如果是这样,你知道我该如何解决吗? 我的意思是更改配置,以便 ESLint 知道GeolocationPosition
将被定义。实际上,您似乎需要更一般地对其进行配置才能了解 TypeScript。
我明白了。我的 eslint 文件配置为使用打字稿,并且在此问题之前工作正常。我阅读了您链接的文档,但仍然不确定如何执行您的建议。
我不认为@typescript-eslint/no-undef 是一回事。早些时候,我将 no-unused-vars 规则更改为 typescript 版本,但找不到与 undef 类似的规则。然而,当我输入这个时,我意识到 undef 规则基本上想要做 typescript 已经做的事情,所以我删除了它。
【参考方案1】:
Don't use no-undef in TypeScript projects。只需在您的配置中禁用该规则,TypeScript 会做同样的事情但更好。
【讨论】:
是的,正如您在我上面的评论中看到的那样,我在这篇文章之前才意识到这一点。不过,这就是答案 - 谢谢。以上是关于如何绕过 ESLint 调用 Typescript 中未定义的 Geolocation 接口?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 typescript-eslint 规则添加到 eslint
如何禁用@typescript-eslint/no-non-null-assertion 规则
如何使用 typescript 同步 eslint 或设置类似的 tslint 和 prettier?