You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript/TypeScript中为带占位符的静态字符串注入变量值?

解决方案:动态注入id到预定义字符串

你的问题核心是预定义的静态字符串里的${id}只是字面量文本,并没有被当作模板变量解析——因为VariableSettings.string_value在类初始化时就被固定成了"vikas/${id}/data"这个字符串,里面的${id}不会自动识别成后续传入的参数。下面给你几个实用的解决思路:

方案1:改成静态方法动态生成路径(最直观)

把静态字符串改成接收id参数的静态方法,直接返回拼接好的模板字符串:

// Variables文件
export class VariableSettings { 
  public static getStringValue(id: string): string { 
    return `vikas/${id}/data`; 
  }
}

调用时直接传入id即可:

// 其他文件
import {VariableSettings} from './variables'; 
getData(id:string ){ 
  const result = VariableSettings.getStringValue(id);
  console.log(result); 
  // 输出:vikas/abcd11123/data 
}

方案2:用占位符+字符串替换(适合需要配置化模板的场景)

如果需要保留模板字符串作为静态配置(比如要从外部文件读取模板),可以把占位符改成更易识别的标记(比如{id}),然后在使用时用replace替换:

// Variables文件
export class VariableSettings { 
  public static string_value: string = 'vikas/{id}/data'; 
}

调用时替换占位符:

// 其他文件
import {VariableSettings} from './variables'; 
getData(id:string ){ 
  const result = VariableSettings.string_value.replace('{id}', id);
  console.log(result); 
  // 输出:vikas/abcd11123/data 
}

如果有多个重复的占位符,用正则全局替换更稳妥:replace(/\{id\}/g, id)

为什么原来的代码不生效?

你原来的代码里,VariableSettings.string_value是在类定义阶段就被解析成了字面量字符串"vikas/${id}/data"——这里的${id}不是模板变量,只是普通的字符序列。后续在getData里用${VariableSettings.string_value}包裹,只是把这个字面量字符串再套了一层模板,但里面的${id}依然是字符串的一部分,不会被替换成传入的id参数。


内容的提问来源于stack exchange,提问作者VIKAS KOHLI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:48:17