我有一个简单的函数,它返回数组的长度
const test = (list: any[]) => list.length;
这会产生 eslint 错误:
no-explicit-any: Unexpected any. Specify a different type. (javascript-eslint)
在 TypeScript 中编写此函数的正确方法是什么?
使用泛型:
const test = <T>(list: T[]): number => list.length;
然后你可以调用如下函数:
test([1, 2, 3]) // or test<number>([1, 2, 3]);
test(["s1", "s2", "s3"]); // or test<string>(["s1", "s2", "s3"]);
test([{
key1: 'k1',
key2: 'k2',
}]);
这似乎与 es linters 运行命令文件的规则相关联。但是,您可以将其关闭:
rules: {
"@typescript-eslint/no-explicit-any": "off"
}
但是,我强烈建议您在 Typescript 中使用推理规则。使用 any 类型违背了 TypeScript 的目的。不过,您可以尝试以下操作:
function test <Type> (list: Type[]): number {
return list.length;
}
console.log(test([1, 2, 3, 4]));
console.log(test(["1", "2", "3", "4"]));
console.log(test([1, "2", 3, "4"]));
您还可以通过在文件顶部添加以下行代码来关闭 eslint 规则:
/* eslint-disable @typescript-eslint/no-explicit-any */