Skip to content

Commit 0edf3b8

Browse files
authored
chore: enable unicorn/no-typeof-undefined rule (#6557)
* style: enable `unicorn/no-typeof-undefined` * style: apply fix
1 parent a249412 commit 0edf3b8

File tree

9 files changed

+91
-11
lines changed

9 files changed

+91
-11
lines changed

.eslintrc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module.exports = {
99
'import',
1010
'jest',
1111
'simple-import-sort',
12+
'unicorn',
1213
],
1314
env: {
1415
es6: true,
@@ -200,6 +201,8 @@ module.exports = {
200201
'simple-import-sort/imports': 'error',
201202

202203
'one-var': ['error', 'never'],
204+
205+
'unicorn/no-typeof-undefined': 'error',
203206
},
204207
overrides: [
205208
// all test files

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
"eslint-plugin-import": "^2.26.0",
8787
"eslint-plugin-jest": "^27.0.0",
8888
"eslint-plugin-simple-import-sort": "^10.0.0",
89+
"eslint-plugin-unicorn": "^45.0.2",
8990
"execa": "5.1.1",
9091
"glob": "^8.0.1",
9192
"husky": "^8.0.1",

packages/eslint-plugin/src/rules/no-explicit-any.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export default util.createRule<Options, MessageIds>({
8383
function isNodeRestElementInFunction(node: TSESTree.Node): boolean {
8484
return (
8585
node.type === AST_NODE_TYPES.RestElement &&
86-
typeof node.parent !== 'undefined' &&
86+
node.parent !== undefined &&
8787
isNodeValidFunction(node.parent)
8888
);
8989
}
@@ -110,7 +110,7 @@ export default util.createRule<Options, MessageIds>({
110110
function isNodeValidArrayTSTypeReference(node: TSESTree.Node): boolean {
111111
return (
112112
node.type === AST_NODE_TYPES.TSTypeReference &&
113-
typeof node.typeName !== 'undefined' &&
113+
node.typeName !== undefined &&
114114
node.typeName.type === AST_NODE_TYPES.Identifier &&
115115
['Array', 'ReadonlyArray'].includes(node.typeName.name)
116116
);

packages/eslint-plugin/src/rules/no-unnecessary-qualifier.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,15 @@ export default util.createRule({
8181
const namespaceSymbol = checker.getSymbolAtLocation(tsQualifier);
8282

8383
if (
84-
typeof namespaceSymbol === 'undefined' ||
84+
namespaceSymbol === undefined ||
8585
!symbolIsNamespaceInScope(namespaceSymbol)
8686
) {
8787
return false;
8888
}
8989

9090
const accessedSymbol = checker.getSymbolAtLocation(tsName);
9191

92-
if (typeof accessedSymbol === 'undefined') {
92+
if (accessedSymbol === undefined) {
9393
return false;
9494
}
9595

@@ -101,8 +101,7 @@ export default util.createRule({
101101
);
102102

103103
return (
104-
typeof fromScope === 'undefined' ||
105-
symbolsAreEqual(accessedSymbol, fromScope)
104+
fromScope === undefined || symbolsAreEqual(accessedSymbol, fromScope)
106105
);
107106
}
108107

packages/eslint-plugin/src/rules/prefer-function-type.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export default util.createRule({
7979
if (
8080
(member.type === AST_NODE_TYPES.TSCallSignatureDeclaration ||
8181
member.type === AST_NODE_TYPES.TSConstructSignatureDeclaration) &&
82-
typeof member.returnType !== 'undefined'
82+
member.returnType !== undefined
8383
) {
8484
if (
8585
tsThisTypes?.length &&
@@ -123,7 +123,7 @@ export default util.createRule({
123123
}
124124

125125
if (node.type === AST_NODE_TYPES.TSInterfaceDeclaration) {
126-
if (typeof node.typeParameters !== 'undefined') {
126+
if (node.typeParameters !== undefined) {
127127
suggestion = `type ${sourceCode
128128
.getText()
129129
.slice(

packages/type-utils/src/containsAllTypesByName.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export function containsAllTypesByName(
4141
const bases = type.getBaseTypes();
4242

4343
return (
44-
typeof bases !== 'undefined' &&
44+
bases !== undefined &&
4545
(matchAnyInstead
4646
? bases.some(predicate)
4747
: bases.length > 0 && bases.every(predicate))

packages/typescript-estree/src/parser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ function parseAndGenerateServices<T extends TSESTreeOptions = TSESTreeOptions>(
136136
*/
137137
const parseSettings = createParseSettings(code, options);
138138

139-
if (typeof options !== 'undefined') {
139+
if (options !== undefined) {
140140
if (
141141
typeof options.errorOnTypeScriptSyntacticAndSemanticIssues ===
142142
'boolean' &&

packages/typescript-estree/tools/test-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ export function omitDeep<T = UnknownObject>(
132132

133133
for (const prop in node) {
134134
if (Object.prototype.hasOwnProperty.call(node, prop)) {
135-
if (shouldOmit(prop, node[prop]) || typeof node[prop] === 'undefined') {
135+
if (shouldOmit(prop, node[prop]) || node[prop] === undefined) {
136136
delete node[prop];
137137
continue;
138138
}

yarn.lock

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2000,6 +2000,13 @@
20002000
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239"
20012001
integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==
20022002

2003+
"@eslint-community/eslint-utils@^4.1.2":
2004+
version "4.1.2"
2005+
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.1.2.tgz#14ca568ddaa291dd19a4a54498badc18c6cfab78"
2006+
integrity sha512-7qELuQWWjVDdVsFQ5+beUl+KPczrEDA7S3zM4QUd/bJl7oXgsmpXaEVqrRTnOBqenOV4rWf2kVZk2Ot085zPWA==
2007+
dependencies:
2008+
eslint-visitor-keys "^3.3.0"
2009+
20032010
"@eslint/eslintrc@^1.2.3":
20042011
version "1.2.3"
20052012
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.3.tgz#fcaa2bcef39e13d6e9e7f6271f4cc7cae1174886"
@@ -4921,6 +4928,11 @@ ci-info@^3.2.0:
49214928
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6"
49224929
integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==
49234930

4931+
ci-info@^3.6.1:
4932+
version "3.8.0"
4933+
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
4934+
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
4935+
49244936
cjs-module-lexer@^1.0.0:
49254937
version "1.2.2"
49264938
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
@@ -4933,6 +4945,13 @@ clean-css@^5.2.2, clean-css@^5.3.0:
49334945
dependencies:
49344946
source-map "~0.6.0"
49354947

4948+
clean-regexp@^1.0.0:
4949+
version "1.0.0"
4950+
resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7"
4951+
integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==
4952+
dependencies:
4953+
escape-string-regexp "^1.0.5"
4954+
49364955
clean-stack@^2.0.0:
49374956
version "2.2.0"
49384957
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
@@ -6614,6 +6633,28 @@ eslint-plugin-simple-import-sort@^10.0.0:
66146633
resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz#cc4ceaa81ba73252427062705b64321946f61351"
66156634
integrity sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==
66166635

6636+
eslint-plugin-unicorn@^45.0.2:
6637+
version "45.0.2"
6638+
resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-45.0.2.tgz#d6ba704793a6909fe5dfe013900d2b05b715284c"
6639+
integrity sha512-Y0WUDXRyGDMcKLiwgL3zSMpHrXI00xmdyixEGIg90gHnj0PcHY4moNv3Ppje/kDivdAy5vUeUr7z211ImPv2gw==
6640+
dependencies:
6641+
"@babel/helper-validator-identifier" "^7.19.1"
6642+
"@eslint-community/eslint-utils" "^4.1.2"
6643+
ci-info "^3.6.1"
6644+
clean-regexp "^1.0.0"
6645+
esquery "^1.4.0"
6646+
indent-string "^4.0.0"
6647+
is-builtin-module "^3.2.0"
6648+
jsesc "^3.0.2"
6649+
lodash "^4.17.21"
6650+
pluralize "^8.0.0"
6651+
read-pkg-up "^7.0.1"
6652+
regexp-tree "^0.1.24"
6653+
regjsparser "^0.9.1"
6654+
safe-regex "^2.1.1"
6655+
semver "^7.3.8"
6656+
strip-indent "^3.0.0"
6657+
66176658
[email protected], eslint-scope@^5.1.1:
66186659
version "5.1.1"
66196660
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
@@ -9021,6 +9062,11 @@ jsesc@^2.5.1:
90219062
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
90229063
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
90239064

9065+
jsesc@^3.0.2:
9066+
version "3.0.2"
9067+
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e"
9068+
integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
9069+
90249070
jsesc@~0.5.0:
90259071
version "0.5.0"
90269072
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
@@ -10987,6 +11033,11 @@ [email protected]:
1098711033
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.27.1.tgz#840ef662e55a3ed759d8b5d3d00a5f885a7184f4"
1098811034
integrity sha512-9EmeXDncC2Pmp/z+teoVYlvmPWUC6ejSSYZUln7YaP89Z6lpAaiaAnqroUt/BoLo8tn7WYShcfaCh+xofZa44Q==
1098911035

11036+
pluralize@^8.0.0:
11037+
version "8.0.0"
11038+
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
11039+
integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
11040+
1099011041
postcss-calc@^8.2.3:
1099111042
version "8.2.4"
1099211043
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
@@ -11844,6 +11895,11 @@ regenerator-transform@^0.15.0:
1184411895
dependencies:
1184511896
"@babel/runtime" "^7.8.4"
1184611897

11898+
regexp-tree@^0.1.24, regexp-tree@~0.1.1:
11899+
version "0.1.24"
11900+
resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d"
11901+
integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==
11902+
1184711903
regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3:
1184811904
version "1.4.3"
1184911905
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
@@ -11896,6 +11952,13 @@ regjsparser@^0.8.2:
1189611952
dependencies:
1189711953
jsesc "~0.5.0"
1189811954

11955+
regjsparser@^0.9.1:
11956+
version "0.9.1"
11957+
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709"
11958+
integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==
11959+
dependencies:
11960+
jsesc "~0.5.0"
11961+
1189911962
relateurl@^0.2.7:
1190011963
version "0.2.7"
1190111964
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
@@ -12200,6 +12263,13 @@ [email protected], safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
1220012263
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1220112264
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1220212265

12266+
safe-regex@^2.1.1:
12267+
version "2.1.1"
12268+
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2"
12269+
integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==
12270+
dependencies:
12271+
regexp-tree "~0.1.1"
12272+
1220312273
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
1220412274
version "2.1.2"
1220512275
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -12305,6 +12375,13 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semve
1230512375
dependencies:
1230612376
lru-cache "^6.0.0"
1230712377

12378+
semver@^7.3.8:
12379+
version "7.3.8"
12380+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
12381+
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
12382+
dependencies:
12383+
lru-cache "^6.0.0"
12384+
1230812385
1230912386
version "0.18.0"
1231012387
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"

0 commit comments

Comments
 (0)