如何绕过 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?

为 TypeScript 文件禁用 ESLint

如何使用 ESLint 检查 React/Typescript 项目中的 prop 错误?

如何在 eslint 中使用 atom-typescript 或替代方法