noThenProperty
此内容尚不支持你的语言。
Summary
Section titled “Summary”- Rule available since:
v1.5.0 - Diagnostic Category:
lint/suspicious/noThenProperty - This rule is recommended, meaning it is enabled by default.
- This rule doesn’t have a fix.
- The default severity of this rule is error.
- Sources:
- Same as
unicorn/no-thenable
- Same as
How to configure
Section titled “How to configure”{ "linter": { "rules": { "suspicious": { "noThenProperty": "error" } } }}Description
Section titled “Description”Disallow then property.
When combining objects with a then method (thenable objects) with await expressions or dynamic imports, caution is necessary.
These syntaxes interpret the object’s then method as intended for the resolution or rejection of a promise, which can lead to unexpected behavior or errors.
Examples
Section titled “Examples”Invalid
Section titled “Invalid”export {then};code-block.js:1:9 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ This export exposes the name then.
> 1 │ export {then};
│ ^^^^
2 │
ℹ Values with a then property can be treated like promises by await and dynamic imports, which can cause unexpected behavior.
ℹ Export this value under a different name, or rename the declaration so it does not expose then.
const foo = { then() {}};code-block.js:2:5 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ This object defines a then property.
1 │ const foo = {
> 2 │ then() {}
│ ^^^^
3 │ };
4 │
ℹ Values with a then property can be treated like promises by await and dynamic imports, which can cause unexpected behavior.
ℹ Rename this property to something other than then unless you intentionally need a thenable object.
const foo = { get then() {}};code-block.js:2:9 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ This object defines a then property.
1 │ const foo = {
> 2 │ get then() {}
│ ^^^^
3 │ };
4 │
ℹ Values with a then property can be treated like promises by await and dynamic imports, which can cause unexpected behavior.
ℹ Rename this property to something other than then unless you intentionally need a thenable object.
const foo = { get then() {}};code-block.js:2:8 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ This object defines a then property.
1 │ const foo = {
> 2 │ get then() {}
│ ^^^^
3 │ };
4 │
ℹ Values with a then property can be treated like promises by await and dynamic imports, which can cause unexpected behavior.
ℹ Rename this property to something other than then unless you intentionally need a thenable object.
foo.then = function () {}code-block.js:1:1 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ This object defines a then property.
> 1 │ foo.then = function () {}
│ ^^^^^^^^
2 │
ℹ Values with a then property can be treated like promises by await and dynamic imports, which can cause unexpected behavior.
ℹ Rename this property to something other than then unless you intentionally need a thenable object.
class Foo { then() {}}code-block.js:2:5 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ This class defines a then member.
1 │ class Foo {
> 2 │ then() {}
│ ^^^^
3 │ }
4 │
ℹ Values with a then property can be treated like promises by await and dynamic imports, which can cause unexpected behavior.
ℹ Rename this member to something other than then unless you intentionally need a thenable class.
class Foo { static then() {}}code-block.js:2:12 lint/suspicious/noThenProperty ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ This class defines a then member.
1 │ class Foo {
> 2 │ static then() {}
│ ^^^^
3 │ }
4 │
ℹ Values with a then property can be treated like promises by await and dynamic imports, which can cause unexpected behavior.
ℹ Rename this member to something other than then unless you intentionally need a thenable class.
export {then as success};const foo = { success() {}};class Foo { success() {}}const foo = bar.then;Related links
Section titled “Related links”Copyright (c) 2023-present Biome Developers and Contributors.