Skip to content
← Back to rules

typescript/consistent-type-assertions 风格

🛠️💡 An auto-fix and a suggestion are available for this rule for some violations.

它做了什么

强制统一使用 TypeScript 类型断言。

为什么这是不好的?

混合使用断言风格(as 与尖括号)会使代码更难阅读和维护。
在某些代码库中,出于安全考虑,类型断言被禁止,推荐使用更安全的替代方案,例如类型注解或 satisfies

示例

此规则的 错误 代码示例(默认:assertionStyle: "as"):

ts
const value = <Foo>bar;

此规则的 正确 代码示例(默认:assertionStyle: "as"):

ts
const value = bar as Foo;

此规则的 错误 代码示例(当 assertionStyle: "angle-bracket" 时):

ts
const value = bar as Foo;

此规则的 正确 代码示例(当 assertionStyle: "angle-bracket" 时):

ts
const value = <Foo>bar;

此规则的 错误 代码示例(当 assertionStyle: "never" 时):

ts
const value = bar as Foo;

此规则的 正确 代码示例(当 assertionStyle: "never" 时):

ts
const value: Foo = bar;
const value = bar satisfies Foo;

当禁止对象/数组字面量断言时,应优先使用注解或 satisfies

ts
// 错误(当 `objectLiteralTypeAssertions: "never"` 时)
const obj = { a: 1 } as Foo;

// 正确
const obj: Foo = { a: 1 };
const obj = { a: 1 } satisfies Foo;

配置

assertionStyle

type: "never"

如何使用

要通过配置文件或 CLI 启用 此规则,可以使用:

json
{
  "rules": {
    "typescript/consistent-type-assertions": "error"
  }
}
bash
oxlint --deny typescript/consistent-type-assertions

参考资料