禁止使用Array <T>的数组类型

Ave*_*koz 5 javascript arrays typescript

我的Ttslint会抛出这种结构的警告(禁止使用Array的数组类型.使用T [代替(array-type)):

Array<string | null> | null
Run Code Online (Sandbox Code Playgroud)

这是否正确替换上一个?

(string | null)[] | null
Run Code Online (Sandbox Code Playgroud)

mar*_*424 10

如果您使用(现已弃用)tslint ,则接受的答案是正确的,如果您使用typescript-eslint规则必须写为:

 "@typescript-eslint/array-type": ["error", { "default": "generic" }],
Run Code Online (Sandbox Code Playgroud)

  • 如果您想知道 2023 年以后的正确答案是什么,那就是这个。您还可以使用 [`"@typescript-eslint/ban-types"`](https://typescript-eslint.io/rules/ban-types/) 进行广泛的类型禁止 (2认同)

Zev*_*itz 7

是的,这是阵列类型规则强制执行的行为,当它设置为"array":

必须提供以下参数之一:
*"array"强制使用T[]所有类型T.
*"generic"对所有类型强制使用Array T.
*"array-simple"强制使用T[]if T是一个简单类型(原始或类型引用).

您可以通过tslint.json在与文件相同的文件夹中(或在文件的父文件夹中)创建文件并在其中写入以下内容来禁用整个文件的规则:

"rules": {
    "array-type": false
}
Run Code Online (Sandbox Code Playgroud)

如果要选择其他设置之一:

"rules": {
    "array-type": [true, "generic"]
}
Run Code Online (Sandbox Code Playgroud)

而且,正如您在问题中提到的,相当于:

Array<string | null> | null
Run Code Online (Sandbox Code Playgroud)

是:

(string | null)[] | null
Run Code Online (Sandbox Code Playgroud)