Skip to content
← Back to rules

typescript/no-unnecessary-template-expression Suspicious

💭 This rule requires type information.
🛠️ An auto-fix is available for this rule.

它的作用

不允许可以简化的、不必要的模板表达式(插值)。

为什么这不好?

带有不必要替换表达式的模板字面量会增加复杂度,却没有带来任何好处。静态字符串字面量表达式,或者已经是字符串的表达式,都可以简化。

注意:此规则不会标记没有替换表达式的模板字面量。 例如,`hello` 是允许的,即使它可以写成 'hello'

示例

以下是此规则的错误代码示例:

ts
// 静态值可以并入周围的模板中
const ab1 = `${"a"}${"b"}`;
const ab2 = `a${"b"}`;

const stringWithNumber = `${"1 + 1 = "}${2}`;
const stringWithBoolean = `${"true is "}${true}`;

// 已经是字符串的表达式可以不使用模板重写
const text = "a";
const wrappedText = `${text}`;

declare const intersectionWithString: string & { _brand: "test-brand" };
const wrappedIntersection = `${intersectionWithString}`;

以下是此规则的正确代码示例:

ts
// 静态值并入模板中
const ab1 = `ab`;

// 带有非平凡插值的模板
const name = "world";
const greeting = `Hello ${name}!`;

// 带有表达式的模板
const result = `Result: ${1 + 2}`;

// 简单字符串不需要模板
const text = "a";
const wrappedText = text;

// 多行字符串没有问题
const multiline = `
  Hello
  world
`;

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "options": {
    "typeAware": true
  },
  "rules": {
    "typescript/no-unnecessary-template-expression": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  options: { typeAware: true },
  rules: {
    "typescript/no-unnecessary-template-expression": "error",
  },
});
bash
oxlint --type-aware --deny typescript/no-unnecessary-template-expression

版本

此规则在 v1.12.0 中添加。

参考资料