typescript-eslint 规则,防止将带有类型参数的回调传递给不安全的函数

问题描述 投票:0回答:1

我试图在我的打字稿代码库中对

any
非常严格。我正在使用所有
no-unsafe-*
规则,因此我的
.eslintrc.js
包括:

'@typescript-eslint/no-unsafe-argument': 'error',
'@typescript-eslint/no-unsafe-assignment': 'error',
'@typescript-eslint/no-unsafe-call': 'error',
'@typescript-eslint/no-unsafe-member-access': 'error',
'@typescript-eslint/no-unsafe-return': 'error',

但我刚刚被

any
引起的虫子咬了。

假设外部库有以下代码:

type Callback = (x: any) => void;

function invokesCallback(callback: Callback): void {
  callback({ thisWill: 'break everything' });
}

然后,在我的代码库中,我有这个:

function appendNumber(value: number) {
  someNumbers.push(value);
}

const someNumbers: number[] = [];
invokesCallback(appendNumber);

我在这里没有看到任何(双关语无意的)静态检查错误,我当然愿意!

所以,总而言之,我想知道是否有一个规则,知道回调的类型类似于

(x: any) => void;
only允许具有此签名的函数作为回调传递:
(x: unknown) => void; 

typescript eslint typescript-eslint
1个回答
0
投票

有时最直接的答案就是最好的。

plugin:@typescript-eslint/no-explicit-any
禁止显式使用
any
类型。

如果你无法控制

any
那么,唉,不,typescript-eslint 中没有这样的 lint 规则。您可能想要在 typescript-eslint 上提出问题提出建议。

© www.soinside.com 2019 - 2024. All rights reserved.