如何在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
相关产品推荐
相关产品推荐

